精华内容
参与话题
问答
  • 字符串加密

    千次阅读 2013-01-17 12:09:32
    提交后,成功,程序如下: #include using namespace std; int encodeChar(char c) { if( islower(c)) return c - 96; return c - 38; } char decodeInt(int n) { if(1 ) return n + 96;... return

             

           提交后,成功,程序如下:

    #include <iostream>
    using namespace std;
    
    int encodeChar(char c)
    {
    	if( islower(c))
    		return c - 96;
    
    	return c - 38;
    }
    
    char decodeInt(int n)
    {
    	if(1 <= n && n <= 26)
    		return n + 96;
    
    	return n + 38;
    }
    
    int convert(int x)
    {
    	return (x * x + x + 1) % 52;
    }
    
    void encrypt(char orgStr[], char encStr[])
    {
    	int i, x, result;
    	for(i = 0; '\0' != orgStr[i]; i++)
    	{
    		x = encodeChar(orgStr[i]);
    		result = convert(x);
    		encStr[i] = decodeInt(result);
    	}
    }
    
    int main()
    {
    	char orgStr[100];
    	char encStr[100] = ""; // necessary
    	// memset(encStr, 0, 100 * sizeof(char));
    
    	while(cin >> orgStr)
    	{
    		encrypt(orgStr, encStr);
    		cout << encStr << endl;
    	}
    
    	return 0;
    }


    展开全文
  • 主要为大家详细介绍了python实现字符串加密,生成唯一固定长度字符串,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Python字符串加密

    千次阅读 2018-01-24 11:40:59
    用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。...

    ①base64
    Base64是一种用64个字符来表示任意二进制数据的方法。
    用记事本打开exe、jpg、pdf这些文件时,我们都会看到一大堆乱码,因为二进制文件包含很多无法显示和打印的字符,所以,如果要让记事本这样的文本处理软件能处理二进制数据,就需要一个二进制到字符串的转换方法。Base64是一种最常见的二进制编码方法。

    import base64
    
    s1 = base64.encodestring('hello world') #注意这在python3中改用二进制流了,但是仍然好用
    s2 = base64.decodestring(s1)
    print s1,s2
    
    # aGVsbG8gd29ybGQ=\n
    # hello world

    这是最简单的方法,但是不够保险,因为如果别人拿到你的密文,也可以自己解密来得到明文

    ②win32com.client

    import win32com.client
    def encrypt(key,content): # key:密钥,content:明文
     EncryptedData = win32com.client.Dispatch('CAPICOM.EncryptedData')
     EncryptedData.Algorithm.KeyLength = 5
     EncryptedData.Algorithm.Name = 2
     EncryptedData.SetSecret(key)
     EncryptedData.Content = content
     return EncryptedData.Encrypt()
    
    def decrypt(key,content): # key:密钥,content:密文
     EncryptedData = win32com.client.Dispatch('CAPICOM.EncryptedData')
     EncryptedData.Algorithm.KeyLength = 5
     EncryptedData.Algorithm.Name = 2
     EncryptedData.SetSecret(key)
     EncryptedData.Decrypt(content)
     str = EncryptedData.Content
     return str
    
    s1 = encrypt('lovebread', 'hello world')
    s2 = decrypt('lovebread', s1)
    print s1,s2
    
    # MGEGCSsGAQQBgjdYA6BUMFIGCisGAQQBgjdYAwGgRDBCAgMCAAECAmYBAgFABAgq
    # GpllWj9cswQQh/fnBUZ6ijwKDTH9DLZmBgQYmfaZ3VFyS/lq391oDtjlcRFGnXpx
    # lG7o
    # hello world

    这种方法也很方便,而且可以设置自己的密钥,比第一种方法更加安全,是加密解密的首选之策!

    ③自己写加密解密算法

    def encrypt(key, s):
        b = bytearray(str(s).encode("gbk"))
        n = len(b) # 求出 b 的字节数
        c = bytearray(n*2)
        j = 0
        for i in range(0, n):
            b1 = b[i]
            b2 = b1 ^ key # b1 = b2^ key
            c1 = b2 % 16
            c2 = b2 // 16 # b2 = c2*16 + c1
            c1 = c1 + 65
            c2 = c2 + 65 # c1,c2都是0~15之间的数,加上65就变成了A-P 的字符的编码
            c[j] = c1
            c[j+1] = c2
            j = j+2
        return c.decode("gbk")
    
    
    def decrypt(key, s):
        c = bytearray(str(s).encode("gbk"))
        n = len(c)  # 计算 b 的字节数
        if n % 2 != 0:
            return ""
        n = n // 2
        b = bytearray(n)
        j = 0
        for i in range(0, n):
            c1 = c[j]
            c2 = c[j+1]
            j = j+2
            c1 = c1 - 65
            c2 = c2 - 65
            b2 = c2*16 + c1
            b1 = b2 ^ key
            b[i] = b1
        return b.decode("gbk")

    更多内容访问omegaxyz.com

    展开全文
  • 关键是中文字符的加密(假设明文字符串为str) 我的解决方法是先将str使用Base64编码再使用与密钥异或加密 QByteArray a = str.toLocal8Bit().toBase64(); QString newStr(a); 解密的时候先与密钥异或,得出的是...

    加密算法很简单,就是设定一密钥,将明文与其循环异或得到密文。

    关键是中文字符的加密(假设明文字符串为str)

    我的解决方法是先将str使用Base64编码再使用与密钥异或加密

    QByteArray a = str.toLocal8Bit().toBase64();

    QString newStr(a);

    解密的时候先与密钥异或,得出的是明文Base64编码后的结果,得出的字符串再用GBK编码标准进行编码打包,这样就可以解出中文字符了

    result = QTextCodec::codecForName("GBK")->toUnicode(QByteArray::fromBase64(result.toLocal8Bit()));


    展开全文
  • C++字符串加密与解密

    热门讨论 2011-08-15 20:41:11
    使用C++写的字符串加密与解密,非常简单。
  • 字符串加密与解密

    千次阅读 2010-05-05 18:09:00

            设计应用程序时,为了防止一些敏感信息的泄露,通常需要对这些信息进行加密。以用户的登录密码为例,如果密码以明文的形式存储在数据表中,很容易就会被人发现;相反,如果密码以密文的形式储存,即使别人从数据表中发现了密码,也是加密之后的密码,根本不能使用。通过对密码进行加密,能够极大地提高系统的保密性。下面通过一个实例讲解如何对字符串进行加密与解密。

    例   创建一个控制台应用程序,命名为EDString。在该程序中定义一个静态的字符串变量,用来记录加密密钥。代码如下:

    static string encryptKey = "Oyea";//定义密钥

    自定义一个返回值类型为string类型的Encrypt方法,用来对字符串进行加密。该方法中有一个string类型的参数,用来表示要加密的字符串。Encrypt方法实现代码如下:

    #region 加密字符串

    /// <summary>

    /// 加密字符串

    /// </summary>

    /// <param name="str">要加密的字符串</param>

    /// <returns>加密后的字符串</returns>

    static string Encrypt(string str)

    {

        DESCryptoServiceProvider descsp = new DESCryptoServiceProvider(); //实例化加/解密类对象

        byte[] key = Encoding.Unicode.GetBytes(encryptKey);//定义字节数组,用来存储密钥

        byte[] data = Encoding.Unicode.GetBytes(str); //定义字节数组,用来存储要加密的字符串

        MemoryStream MStream = new MemoryStream(); //实例化内存流对象

        //使用内存流实例化加密流对象

        CryptoStream CStream = new CryptoStream(MStream, descsp.CreateEncryptor(key, key), CryptoStreamMode.Write);

        CStream.Write(data, 0, data.Length); //向加密流中写入数据

        CStream.FlushFinalBlock(); //释放加密流

        return Convert.ToBase64String(MStream.ToArray());//返回加密后的字符串

    }

    #endregion

          说明:由于加密、解密字符串时,需要用到加密类和内存流,所以首先需要在命名空间区域添加System.Security.Cryptography和System.IO命名空间。

    自定义一个返回值类型为string类型的Decrypt方法,用来对加密后的字符串进行解密。该方法中有一个string类型的参数,用来表示要解密的字符串。Decrypt方法实现代码如下:

    #region 解密字符串

    /// <summary>

    /// 解密字符串

    /// </summary>

    /// <param name="str">要解密的字符串</param>

    /// <returns>解密后的字符串</returns>

    static string Decrypt(string str)

    {

        DESCryptoServiceProvider descsp = new DESCryptoServiceProvider();//实例化加/解密类对象

        byte[] key = Encoding.Unicode.GetBytes(encryptKey);//定义字节数组,用来存储密钥

        byte[] data = Convert.FromBase64String(str); //定义字节数组,用来存储要解密的字符串

        MemoryStream MStream = new MemoryStream();//实例化内存流对象

        //使用内存流实例化解密流对象

        CryptoStream CStream = new CryptoStream(MStream, descsp.CreateDecryptor(key, key), CryptoStreamMode.Write);

        CStream.Write(data, 0, data.Length); //向解密流中写入数据

        CStream.FlushFinalBlock(); //释放解密流

        return Encoding.Unicode.GetString(MStream.ToArray());//返回解密后的字符串

    }

    #endregion

    在Main方法中,首先提示输入信息;然后定义一个string类型的变量,用来记录输入的字符串;之后调用自定义方法Encrypt加密输入的字符串,并使用一个string类型的变量记录该字符串;接着调用自定义方法Decrypt对该字符串进行解密;最后分别输出加密和解密后的字符串。Main方法实现代码如下:

    static void Main(string[] args)

    {

        Console.Write("请输入要加密的字符串:"); //提示输入字符串

        Console.WriteLine(); //换行输入

        string strOld = Console.ReadLine();  //记录输入的字符串

        string strNew = Encrypt(strOld); //加密字符串

        Console.WriteLine("加密后的字符串:" + strNew);//输出加密后的字符串

        Console.WriteLine("解密后的字符串:" + Decrypt(strNew));//解密字符串并输出

        Console.ReadLine();

    }

    程序运行结果如图所示。

                                                                                           ——摘自《C#编程词典》

    展开全文
  • POJ 2159 字符串加密

    千次阅读 2010-11-12 21:21:00
    //此题算法不好想:将上下两行的字符根据出现次数进行排序,然后进行一一的比较,如果匹配的话即可,答案为YES,否则为NO //即无论怎样加密不会改变每个字母出现的频率 int compare(const void* a,const void* b){/...
  • java字符串加密 - MD5

    2018-03-28 20:49:42
    java字符串加密 ,源代码,32位加密 java字符串加密 ,源代码,安全可靠
  • Java对字符串加密解密

    2016-06-03 11:27:29
    DES(Data Encryption Standard)是发明最早的最广泛使用的分组对称加密算法。DES算法的入口参数有三个:Key、Data、Mode。其中Key为8个字节共64位,是DES算法的工作密钥;Data也为8个字节64位,是要被加密或被解密...
  • jquery加密字符串。常用来处理密码,只需引入,然后按照实例去使用
  • 现要对一个由大写字母组成的字符串进行加密,有两种加密方法 (1)替换法:把一个字母替换成它之后的第k个字母,比如AXZ,k取2,加密后得到CZB(Z之后第二个字符为B) (2)置换法:改变原来字符串中字母的顺序,比如将...
  • 最近在做一个队身份证号加密的功能,不管采用DES还是AES,加密后的byte数组用base64转换为字符串,结果字符串的长度都超过40,而数据库该字段的长度是40。请教下,有没有办法将字符串长度控制在40以内
  • 字符串1_字符串2_字符串3_.............字符串N 用_分割成数组后对每个键值进行编码,然后组合成编码后字符串1_编码后字符串2_编码后字符串3_.............编码后字符串N 请问这个过程应该怎么写啊?
  • 这篇文章介绍Android平台上常用的加密方式之MD5加密。MD5 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程...
  • 汇编程序:字符串加密

    千次阅读 2017-04-02 07:10:48
    字符串加密(1)编程为datasg段中字符串中的每个字符加密,加密规则是:每个字符的ASCII值加4。加密好的字符写在待加密字符的后面assume cs:codesg,ds:datasg datasg segment db 'aah, I love you!' db '............
  • C++ cryppto 字符串加密

    2014-07-06 08:42:34
    如果x是仅含两个空格的字符串,x=' ',那么crypto(x)正好等于x,这是为什么,还有其他的含两个字符的字符串经过crypto后不变吗
  • 华为机试-字符串加密

    2017-03-04 22:40:40
    1、对输入的字符串进行加解密,并输出。 2加密方法为: 当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a; 当内容是数字时则把该数字加1,如0替换1...
  • 这样,这个javascript编写字符串加密程序的1.0版本就可以正式出炉了,后续会改善用户界面、由用户指定加密步长等; 但现在恳请列位老师指点,为何用switch(str[n])替代if语句,程序出错?出错代码如下: ...

空空如也

1 2 3 4 5 ... 20
收藏数 16,154
精华内容 6,461
关键字:

字符串加密