常见的加密算法分为对称加密和非对称加密。
对称加密:加密和解密者双方用相同的专有秘钥,进行加密和解密。代表加密算法有AES(RiJndael)、AES256
例如:
加密:
unsigned char key[] = "86723BC52333489dB535BCA82D2DCEB4";//must 32 bytes
RijndaelEncryption aesEncry(key,OD_ENCRYPT, NULL);
unsigned char encodePwd[128];
memset(encodePwd, '\0', 128);
size_t encodeseize = aesEncry.encode((unsigned char*)truePwd.c_str(), truePwd.length(), encodePwd);
string pwd = Base64::encode(encodePwd, encodeseize);
解密:
RijndaelEncryption aesEncry(key,OD_DECRYPT, NULL);
unsigned char decodePwd[128];
memset(decodePwd, '\0', 128);
string encodePwd1 = Base64::decode(encodePwd);
aesEncry.decode((unsigned char*)encodePwd1.c_str(), encodePwd1.length(), decodePwd);
string pwd = (char *)decodePwd;
非对称加密:有共用秘钥和私有秘钥,对加密用共有秘钥的时候,解密则用私有秘钥进行解密;
当加密用私有秘钥进行加密,则解密则用共有秘钥进行解密。因为加密和解密用的是不同的秘钥,因此叫做
非对称加密算法。代表加密算法有RSA。
比如:
1、Alice用Bob的公钥对数据进行了加密,将数据传递给了Bob;
2、Bob收到数据包之后,将Alice的公钥对数据再进行了一层加密,再传给Alice;
3、Alice收到Bob传过来的数据包之后,用自己的私钥将数据打开。
原则就是用对方的公钥进行加密,当自己收到对方的数据,用自己的私钥解开数据。