你的第二個猜測並不壞。
通常的方式是簽名(不加密)以下:
- 計算哈希的消息(如SHA256),有要簽名。
- 簽署本哈希值(即使用RSA加密私鑰)
就是這樣。將簡單消息和簽名散列傳送給任何人。該郵件未加密,因此可供所有收件人閱讀。在公鑰的幫助下,每個人都可以解密哈希,計算他或她自己的哈希散列,只要哈希(自己計算的和簽名和解密的哈希)相等,簽名就是有效的,並且消息具有簽名後不會改變。
如果您的消息還需要加密以及您通常不使用RSA,因爲它對於較大的消息(這意味着比私鑰的模數大,例如2048位)要慢並且不靈活。
使用像AES CBC這樣的對稱算法來加密消息。巧合生成的加密密鑰可以使用收件人的公鑰進行加密,然後進行傳輸。
綜上所述使用RSA與SHA256(簽名)簽名和加密和AES CBC(加密): 1.計算SHA256哈希M. 和你的公鑰2.標記H您的留言H,即加密^ h用你的RSA私鑰。這是您的簽名S. 3.生成一個隨機密鑰K. 4.用AES CBC加密M以獲得加密消息M'。 5.用收件人的公鑰加密K得到K'。 6.將K',您的簽名S和M'發送給您的收件人。
只有收件人才能撤消所有步驟:
- 解密K」與接收者的私有密鑰來獲得K(RSA)。
- 解密M」與K(AES CBC)得到消息M.
- 解密S採用你的公鑰(RSA)獲得H.
- 計算M的SHA256哈希
- 比較計算步驟4與H的散列(來自步驟3)。如果兩者相同,則簽名被成功驗證。