作者jlovet.bbs@ptt.cc (Want 2 see u no more) 看板: linux
標題Re: [問題] pgp為什麼只能用公錀加密,不能用私錀加密
時間批踢踢實業 (2008/07/03 Thu 18:57:51)
※ 引述《mgdesigner (魔法設計師)》之銘言:
: ※ 引述《jlovet (Want 2 see u no more)》之銘言:
: : http://www.openssl.org/docs/crypto/rsa.html#
: : OpenSSL似乎就可以用public/private加密
: : int RSA_public_encrypt(int flen, unsigned char *from,
: : unsigned char *to, RSA *rsa, int padding);
: 恕刪
: : 個人是想,最好是有個方法可以移除private key裡面的某些資訊
: : 這樣拿到private key也不能生出public key...
: : 這樣...兩個的地位就平等了...
: 是RSA的非對稱金鑰,一定是可以從private key生出public key,如果兩者對不起來,那
: 就慘了耶。變成身份錯誤,失去作用了。
1. OpenSSL的確可以用 public/private key encrypt
2. http://zh.wikipedia.org/wiki/RSA
簽名消息
RSA也可以用來為一個消息署名。假如阿黃想給巴哥傳遞一個署名的消息的話,那麼她可
以為她的消息計算一個散列值,然後用她的密鑰加密這個散列值並將這個“署名”加在消
息的後面。這個消息只有用她的公鑰才能被解密。巴哥獲得這個消息後可以用阿黃的公鑰
解密這個散列值,然後將這個數據與他自己為這個消息計算的散列值相比較。假如兩者相
符的話,那麼他就可以知道發信人持有阿黃的密鑰,以及這個消息在傳播路徑上沒有被篡
改過。
第二行,用密鑰加密這個hash value
3. RSA key的產生
假設Alice想要通過一個不可靠的媒體接收Bob的一條私人訊息。她可以用以下的方式來產
生一個公鑰和一個密鑰:
1. 隨意選擇兩個大的質數p和q,p不等於q,計算N=pq。
2. 根據歐拉函數,與N互質的整數個數為(p-1)(q-1)
3. 選擇一個整數e與(p-1)(q-1)互質,並且e小於(p-1)(q-1)
4. 用以下這個公式計算d:d× e ≡ 1 (mod (p-1)(q-1))
5. 將p和q的記錄銷毀。
e是公鑰,d是私鑰。d是秘密的,而N是公眾都知道的。Alice將她的公鑰傳給Bob,而將她
的私鑰藏起來。
原先的設計,就是會把p,q銷毀,一人有 d,其他人有e. d*e ≡ 1 (mod (p-1)(q-1)
怎麼能算說d,e的地位不同呢?
只是說現在的實做我只看到OpenSSL有這樣的作法而已.
http://en.wikipedia.org/wiki/Public-key_cryptography
The key pair can also be used in reverse; the private key can be used to
encrypt messages that only the public key can decrypt.[5] This is useful for
applications where, instead of confidentiality being the goal, integrity,
authenticity, and/or transparency is the goal, such as with digital signing.
http://www.sei.cmu.edu/str/descriptions/publickey.html
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.102.254