对称加密,非对称加密
对称加密: RC2、RC4、IDEA、DES、Triple DES、AES以及Camellia;
DES(Data Encryption Standard), 1976, 容易被破解,不安全,密钥长度只有56bit
AES(Advanced Encryption Standard or Rijndael), around 2001,目前最流行
aes密钥长度有三种:128bit, 192bit, 256bit
其实对称加密,其加密、解密密钥也是不一样的,但都基于同样的Seed,解密比加密费劲。
AES是一个block一个block加密的,block size是16Byte。
数据被切成N*16Byte分别加密,余下<16Byte的数据被加密后也变成了16Byte,有填充。
用openssl crypto库加密代码参见:http://blog.csdn.net/xueyushenzhou/article/details/23281675
非对称加密(public-key cryptography): RSA、Diffie-Hellman、DSA;
RSA: Rivest-Shamir-Adleman
openssl rsa -out rsa_private_key.pem 2048, 生成的.pem文件既包括公钥,也包括私钥。
提取对应的公钥: openssl rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
根据私钥文件得到私钥: RSA* pPrivateRsa = PEM_read_RSAPrivateKey(fp,NULL,NULL,NULL);
根据公钥文件得到公钥: RSA* pPubRsa = PEM_read_RSA_PUBKEY(fp,NULL,NULL,NULL);
RSA密钥长度: 1024bit, 2048bit, RSA_size(pRsa)可以得到长度
明文长度: be less than RSA_size(
rsa) - 11 for the PKCS #1 v1.5 based padding modes
less than RSA_size(
rsa) - 41 for RSA_PKCS1_OAEP_PADDING
exactly RSA_size(
rsa) for RSA_NO_PADDING
密文长度: 分成多个block,每个block长度等于密钥长度
解密的时候RSA_public_encrypt(flen, in, out, pPubRsa, RSA_PKCS1_PADDING), 会返回block实际的明文长度。
作用类似CRC,是用来做数据校验的。
其他:
IV:
Nonce