Rsa
我真的需要在 RSA 中使用相同的私鑰/公鑰對嗎?
所以我正在製作一個 Android 應用程序,我需要我的應用程序只能掃描我自己生成的二維碼,並且我想確保沒有其他人可以生成假的二維碼。
數據不敏感,任何人都可以閱讀,甚至是明文。
問題來了,我需要驗證二維碼的來源,有人建議我對其進行數字簽名,因此,我有我的私鑰,我用公鑰發送我的應用程序,然後應用程序使用檢查二維碼的公鑰
我沒有得到的一些東西:
- 我是否使用私鑰加密了**整個消息?**或者我只是在我的消息旁邊生成一些單獨的簽名?
- 據我所知,以 RSA 為例,每次我加密消息時,都會生成一個新的私鑰和公鑰,對吧?那麼如果公鑰在每個二維碼中不斷變化,應用程序將如何驗證/解密消息呢?
簡單地說:
我的二維碼數據是這樣的:
{"a": 1, "b": 2, "c": 3}
我希望我的應用程序確保這些數據來自授權來源,而不是由其他任何人生成。
有人建議我對其進行數字簽名,因此,我有我的私鑰,我使用公鑰發送我的應用程序,然後應用程序使用公鑰檢查 QR 碼
只要您能夠滿足 RSA(簽名大小、計算)的要求,這聽起來就是一個絕妙的主意。
我是否使用私鑰加密了整個消息?或者我只是在我的消息旁邊生成一些單獨的簽名?
您正在生成一些單獨的簽名,位於您的消息旁邊。也就是說,RSA 簽名算法(您執行的)獲取消息(和私鑰),並吐出一個“簽名”。然後,RSA 驗證算法(在手機上執行)獲取消息、簽名和 RSA 公鑰,然後輸出“簽名有效”或“無效”。
您將在二維碼中輸入您的消息和簽名。
據我所知,以 RSA 為例,每次我加密消息時,都會生成一個新的私鑰和公鑰,對吧?
沒有。有些東西被稱為“一次性簽名”,其中公鑰/私鑰只能使用一次,但 RSA 不是其中之一。相反,單個 RSA 私鑰可以簽署任意數量的消息。