openssl消息摘要 签名和验签 对称加解密使用介绍

2018-01-18 21:26:00
admin
原创 2612
摘要:openssl消息摘要 签名和验签 对称加解密使用介绍

一、openssl消息摘要

openssl dgst -md5 infile,结果长度32字符

ba3970dc8bd96cf58f075281dc8687da


openssl dgst -sha1 infile结果长度40字符
9ebcc6e382fc42f0b3aeb2c7e3dce627fff4caa3


openssl dgst -sha256 infile结果长度64字符
9181a18fa2170b63b745fe129be5c7a6cd6d34d0c8c435f96853b8b266bc577f


二、openssl签名和验签

-hex,签名结果使用16进制表示


rsa签名和验签:

openssl dgst -sha256 -sign sign/private.pem -out sign.data infile

openssl dgst -sha256 -verify sign/public.pem -signature sign.data infile
Verified OK


hmac签名,hmac密钥长度最好和哈希算法保持一致,避免额外运算:

openssl dgst -md5 -hmac 10b9b40da9c798d2b4a6e36aa907f498 -out sign.data infile


三、对称加解密使用介绍

1、DES密钥每个字节使用奇校验,1key有效位=64*7/8=56,2key有效位=128*7/8=112,3key有效位=192*7/8=168;

2、DES密钥包含奇偶校验位,所以相同长度密钥AES比DES加密强度更高;

3、DES加密分组是64位,AES加密分组是128位,所以AES加密速度更快;

4、对称加密算法速度比较:Blowfish > AES > DES;

5、PKCS7Padding:数据缺少n字节对齐则补充n字节,每个字节是n,数据已经对齐则补充一个块,每个字节是块大小;

6、PKCS5Padding:PKCS7Padding子集,块大小固定是8字节;

7、DES默认填充方式是PKCS5PaddingAES默认填充方式是PKCS7Padding

8、PKCS5_PBKDF2_HMAC函数使用密码生成导出密钥,规范地址:https://www.rfc-editor.org/rfc/rfc2898


奇偶校验位:
1、奇偶校验位用于表示给定位数的二进制中1的个数是奇数还是偶数,是最简单的错误校验码;

2、如果一组数据位中1的个数是奇数,那么偶校验位就置为1,从而使得1的总数是偶数;

3、如果一组数据位中1的个数是偶数,那么奇校验位就置为1,从而使得1的总数是奇数;


流加密介绍:

1、加密和解密使用相同伪随机加密数据流作为密钥,明文数据与密钥数据顺序对应加密,得到密文数据流;

2、移动通信使用的三种流加密算法:SNOW 3G、AES-CTR、ZUC;

3、AES-CTR使用密钥加密nonce和counter,生成加密数据流,nonce是12字节,counter是4字节;

4、AES-CTR明文和密文长度一样,泄露了明文长度,如果重复使用counter,可能泄露明文数据;

5、AES-GCM,AES Galois/Counter Mode,G是GMAC,消息认证码,C是CTR,计数模式;

6、AES-GCM相比AES-CBC优势:支持并行加密,支持消息认证码,并且不需要补齐;


密钥生成:

openssl rand -rand /dev/urandom 32 2>/dev/null | hexdump -e '16/1 "%02x" "\n"'

openssl rand -rand /dev/urandom 32 2>/dev/null | hexdump -e '16/1 "%02x" " | "' -e '16/1 "%_p" "\n"'


DES加解密:

openssl enc -des-ede-cbc -K 12345678 -iv 12345678 -e -in in.txt -out cipher.txt
openssl enc -des-ede-cbc -K 12345678 -iv 12345678 -d -in cipher.txt -out plain.txt


AES加解密:

openssl enc -aes-128-cbc -K 12345678 -iv 12345678 -e -in in.txt -out cipher.txt
openssl enc -aes-128-cbc -K 12345678 -iv 12345678 -d -in cipher.txt -out plain.txt

发表评论
评论通过审核之后才会显示。