久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
用openssl做rsa數(shù)字簽名、校驗,及n、e到PEM格式轉(zhuǎn)換
[打印本頁]
作者:
wangyin
時間:
2014-8-16 23:08
標題:
用openssl做rsa數(shù)字簽名、校驗,及n、e到PEM格式轉(zhuǎn)換
0. 產(chǎn)生測試用的文件
echo "hello world" >hello.txt
1. 做一下sha256 hash
$ openssl dgst -sha256 hello.txt
SHA256(hello.txt)= a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
或者,來個二進制輸出
$ openssl dgst -sha256 -binary -out hello.sha256 hello.txt
$ od -v -An -t x1 hello.sha256
a9 48 90 4f 2f 0f 47 9b 8f 81 97 69 4b 30 18 4b
0d 2e d1 c1 cd 2a 1e c0 fb 85 d2 99 a1 92 a4 47
2. 創(chuàng)建rsa密鑰
$ openssl genrsa -out key.pri -f4 2048
Generating RSA private key, 2048 bit long modulus
......................................................+++
..........................................+++
e is 65537 (0x10001)
3. 看一下密鑰內(nèi)容
$ openssl rsa -inform PEM -in key.pri -text
....
4. 導出公鑰
$ openssl rsa -inform PEM -outform PEM -in key.pri -out key.pub -pubout
writing RSA key
5. 查看公鑰
$ openssl rsa -inform PEM -in key.pub -pubin -text
....
6. hash并用私鑰簽名
$ openssl dgst -sha256 -out hello.sig -sign key.pri -keyform PEM hello.txt
$ od -v -An -t x1 hello.sig
....
7. 公鑰校驗
$ openssl dgst -sha256 -keyform PEM -verify key.pub -signature hello.sig hello.txt
Verified OK
上面這個命令只能輸出"Verification OK"或者"Verification Failure"。如果想看到恢復的數(shù)據(jù),可以用下面的命令:
$ openssl rsautl -in hello.sig -inkey key.pub -pubin -verify -hexdump
0000 - 30 31 30 0d 06 09 60 86-48 01 65 03 04 02 01 05 010...`.H.e.....
0010 - 00 04 20 a9 48 90 4f 2f-0f 47 9b 8f 81 97 69 4b .. .H.O/.G....iK
0020 - 30 18 4b 0d 2e d1 c1 cd-2a 1e c0 fb 85 d2 99 a1 0.K.....*.......
0030 - 92 a4 47 ..G
或者不去掉pkcs填充的字節(jié):
$ openssl rsautl -in hello.sig -inkey key.pub -pubin -verify -hexdump -raw
0000 - 00 01 ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0010 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0020 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0030 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0040 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0050 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0060 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0070 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0080 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
0090 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
00a0 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
00b0 - ff ff ff ff ff ff ff ff-ff ff ff ff ff ff ff ff ................
00c0 - ff ff ff ff ff ff ff ff-ff ff ff ff 00 30 31 30 .............010
00d0 - 0d 06 09 60 86 48 01 65-03 04 02 01 05 00 04 20 ...`.H.e.......
00e0 - a9 48 90 4f 2f 0f 47 9b-8f 81 97 69 4b 30 18 4b .H.O/.G....iK0.K
00f0 - 0d 2e d1 c1 cd 2a 1e c0-fb 85 d2 99 a1 92 a4 47 .....*.........G
或者來個二進制的文件:
$ openssl rsautl -in hello.sig -out hello.rec -inkey key.pub -pubin -verify
$ od -v -An -t x1 hello.rec
30 31 30 0d 06 09 60 86 48 01 65 03 04 02 01 05
00 04 20 a9 48 90 4f 2f 0f 47 9b 8f 81 97 69 4b
30 18 4b 0d 2e d1 c1 cd 2a 1e c0 fb 85 d2 99 a1
92 a4 47
最后32個字節(jié)是hello.txt的sha256值,前面19個字節(jié)是按照pkcs規(guī)范添加的用來標示hash算法的數(shù)據(jù)。
有時候你拿到的公鑰可能不是PEM格式的,而只是一個n和e,openssl的標準命令是不能直接用的,也沒有提供轉(zhuǎn)換命令(存疑,反正我是沒發(fā)現(xiàn)比自己寫個小程序更簡單的辦法)。這時候就需要用openssl庫自己寫個小程序來做轉(zhuǎn)換了。好在這個程序?qū)懫饋聿宦闊玫降膸讉函數(shù)在下面幾個頭文件中定義:
openssl/bn.h、openssl/rsa.h、openssl/pem.h
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
亚洲精品天堂
|
午夜影院黄
|
日韩毛片
|
91一区二区三区在线观看
|
亚洲 成人 在线
|
色av一区二区
|
国产精品一区二区三区在线
|
国产欧美精品在线观看
|
在线视频一区二区三区
|
久久国产区
|
黄色福利
|
午夜精品一区二区三区在线观看
|
国产精品成人一区
|
免费在线观看av网站
|
97人澡人人添人人爽欧美
|
免费在线观看av网址
|
国产精品视频一区二区三区四区国
|
亚洲一区二区在线播放
|
精品国产久
|
久久国产日韩
|
www.788.com色淫免费
|
白浆在线
|
国产成人a亚洲精品
|
国产真实乱对白精彩久久小说
|
国产精品二区三区
|
国产一级片
|
www.99热这里只有精品
|
午夜影院官网
|
一区二区精品
|
国产精品特级毛片一区二区三区
|
久久久99精品免费观看
|
国产成人综合在线
|
亚洲成人av
|
欧美日韩高清在线一区
|
欧美视频在线免费
|
浴室洗澡偷拍一区二区
|
日韩在线综合
|
成人av免费在线观看
|
国产精品精品视频一区二区三区
|
羞羞网站在线观看
|
亚洲一区国产精品
|