[转载]OpenSSL Sign Verify
Openssl 的签名和校验:
使用 openssl 命令对信息进行编码,签名,校验,恢复等操作,了解 openssl 的基本签名机制。
原文:http://blog.csdn.net/hacode/article/details/44651929
Prepare Test data
echo -n "hello world" > msg.txt
- 1
Asymmetric keys always operate with short-length input: Such as:
- digest
- shared symmetric key
corresponding to TWO working mode:
- sign & verify
- encrypt & decrypt
So, do NOT sign with a large input, which may violate with KEY_SIZE.
Prepare digest of a message
openssl sha256 -binary -out hash.dat msg.txt
- 1
# hd hash.dat
00000000 b9 4d 27 b9 93 4d 3e 08 a5 2e 52 d7 da 7d ab fa |.M'..M>...R..}..|
00000010 c4 84 ef e3 7a 53 80 ee 90 88 f7 ac e2 ef cd e9 |....zS..........|
- 1
- 2
- 3
- 4
Prepare RSA Key pairs
openssl genrsa -out cakey.pem 2048
openssl rsa -in cakey.pem -pubout -out capub.pem
- 1
- 2
pkeyutl
sign
openssl pkeyutl -sign -in hash.dat -inkey cakey.pem -out sig
- 1
#hd sig
00000000 a2 78 7a f4 4f 66 ba 14 d2 55 9a 32 59 5e c1 f7 |.xz.Of...U.2Y^..|
00000010 2d eb 33 f8 5b ee b3 da 62 4b d6 a7 17 d6 11 df |-.3.[...bK......|
00000020 8b fe 01 76 37 46 7e 34 6e f5 9a 4f a4 d6 82 d1 |...v7F~4n..O....|
00000030 49 d4 78 a3 25 7a 85 d6 de fc 4a 8e fe 17 4a 84 |I.x.%z....J...J.|
00000040 32 0c b5 e5 25 3d 93 37 f6 a6 81 84 8f fb 79 34 |2...%=.7......y4|
00000050 c6 f3 bd 75 26 e1 58 85 ec 72 3d 96 18 31 4c d9 |...u&.X..r=..1L.|
00000060 85 24 9b 69 99 70 a8 39 d2 93 c0 9b 0b 81 e0 58 |.$.i.p.9.......X|
00000070 75 08 79 a8 2b 2a 4c 04 aa 35 e4 89 30 4a 1b f2 |u.y.+*L..5..0J..|
00000080 b6 d0 62 7e 03 58 3b 63 68 e1 87 14 66 84 bc 67 |..b~.X;ch...f..g|
00000090 2e b3 05 f9 c0 a5 43 61 47 f8 54 ee f5 7b 15 62 |......CaG.T..{.b|
000000a0 f6 72 86 57 7d aa 95 0e a3 95 c3 85 6f 30 69 6b |.r.W}.......o0ik|
000000b0 81 5e ae 81 00 3f a3 b8 4a aa 73 e3 e3 15 13 16 |.^...?..J.s.....|
000000c0 0a d5 05 2b a0 68 b7 e4 4e a2 6d c1 c5 ec 5f ee |
