久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11328|回復: 0
打印 上一主題 下一主題
收起左側

用openssl做rsa數字簽名、校驗,及n、e到PEM格式轉換

[復制鏈接]
跳轉到指定樓層
樓主
ID:51024 發表于 2014-8-16 23:08 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

0. 產生測試用的文件
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. 創建rsa密鑰
$ openssl genrsa -out key.pri -f4 2048
Generating RSA private key, 2048 bit long modulus
......................................................+++
..........................................+++
e is 65537 (0x10001)

3. 看一下密鑰內容
$ 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"。如果想看到恢復的數據,可以用下面的命令:
$ 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填充的字節:
$ 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個字節是hello.txt的sha256值,前面19個字節是按照pkcs規范添加的用來標示hash算法的數據。

有時候你拿到的公鑰可能不是PEM格式的,而只是一個n和e,openssl的標準命令是不能直接用的,也沒有提供轉換命令(存疑,反正我是沒發現比自己寫個小程序更簡單的辦法)。這時候就需要用openssl庫自己寫個小程序來做轉換了。好在這個程序寫起來不麻煩,用到的幾個函數在下面幾個頭文件中定義:
openssl/bn.h、openssl/rsa.h、openssl/pem.h


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: caoporn国产精品免费公开 | 欧洲精品码一区二区三区免费看 | 91精品国产91久久久久久最新 | 欧美日韩电影在线 | 国产免费va | 国产精品久久久久久久久免费桃花 | 久久精品国产一区二区电影 | 色综合久久久 | 超碰97免费在线 | 日日日日日日bbbbb视频 | 国产精品美女久久久久久不卡 | 久久精品色欧美aⅴ一区二区 | 国产福利网站 | 日韩欧美在线免费观看 | а_天堂中文最新版地址 | 日韩中文字幕一区 | 欧美中文字幕在线观看 | 免费一区| 欧美日韩在线观看一区 | 日日碰狠狠躁久久躁婷婷 | 成人在线精品视频 | 亚洲久久一区 | 国产精品一区久久久 | 日韩中文字幕 | 亚洲不卡在线观看 | 精国产品一区二区三区 | 亚洲精品在线观 | 高清一区二区 | 国产精品久久久久久久久久久新郎 | 成人三区 | 久久久久久中文字幕 | 国产 日韩 欧美 在线 | 久草新在线 | 午夜精品一区二区三区在线视频 | 中文字幕不卡 | 91精品久久久久久综合五月天 | 亚洲福利在线视频 | 国产精品久久久久一区二区 | 色悠悠久 | jav成人av免费播放 | 亚洲欧美日本在线 |