是的。你可以用RSA來做 - 做一個類似Diffie-Hellman的交換,因爲不僅一對關聯對中的關鍵字可以通勤,而且來自不同關鍵對的關鍵字也可以通勤。我們做了一個奇怪的現象在這裏
alice -> bob: alice.pub bob -> alice: bob.pub alice: r = random.secret() alice -> bob: (r * (alice.priv * bob.pub)) bob: r = ((r * (alice.priv * bob.pub)) * (bob.priv * alice.pub))
通知。我們在一次操作中混合了來自不同密鑰對的RSA操作。括號中的對象實際上是一個新的虛擬RSA密鑰,並且這些密鑰都不是公共的。如果我們試圖直接創建RSA密鑰,愛麗絲或鮑勃都會知道這對密鑰。這個密鑰對實際上是一個祕密密鑰,你寫信給一端,只有另一端可以解密它,但是你不能解密你自己寫的東西,也沒有人能夠將消息加密到另一端。
我從來沒有見過任何人混合這樣的keypairs,但我通過編寫代碼來測試這個。我不得不做一些不尋常的事情,因爲通常情況下,將私鑰應用於消息是爲了'簽署'。但是簽名通常會散列祕密,並將私鑰應用到它的散列;我們不想要的東西。所以,在我的代碼,一旦我有RSA組件(d,E,N)提取到任意精度的數字...即:解密,加密模...我只是做:
wormholeSend(me,you,msg) = (((me^{me_D}) \% me_N)^{you_E}) \% you_N
的有點棘手的是E(加密指數)實際上是一個可預測的值,但模數N在公鑰(E,N)中。 D對每一方都是私密的。我們在這裏需要小心,因爲你和我有不同的模數N.
我這樣做是因爲我想要一個系統,一個程序被授權對用戶可以解密的密鑰進行加密。這樣做,用戶無法加密密鑰,並且程序無法解密它們。
來源
2015-12-13 15:23:41
Rob
B的* private *鍵也可以成爲A的* public *鍵嗎?根據定義,兩者是相互排斥的。私密應該保密,不公開。 – Mac 2011-04-14 11:54:21
這很難解釋,但正如我所說;我不想讓A方加密消息,他們只知道如何解密它們。這就是爲什麼他們不知道他們的「公共」鑰匙。它可能不會被稱爲不對稱加密,但這正是我試圖找到的。 – SaphuA 2011-04-14 11:56:27