我有這個問題 我想爲一個字符串兩次使用此代碼加密:Java的RSA得到相同的代碼兩次
KeySpec keySpec = new X509EncodedKeySpec(new BigInteger(publicKey, 36).toByteArray());
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
Key decodedPublicKey = keyFactory.generatePublic(keySpec);
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, decodedPublicKey);
byte a1[] = cipher.doFinal(z.getBytes());
KeySpec keySpec2 = new X509EncodedKeySpec(new BigInteger(publicKey, 36).toByteArray());
KeyFactory keyFactory2 = KeyFactory.getInstance("RSA");
Key decodedPublicKey2 = keyFactory2.generatePublic(keySpec2);
Cipher cipher2 = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher2.init(Cipher.ENCRYPT_MODE, decodedPublicKey2);
byte a2[] = cipher.doFinal(z.getBytes());
兩者都使用相同publicKey
,以及相同的輸入z
但每兩個塊的代碼創建一個不同的字節數組(a1!=a2
) 我希望它是平等的,但我不知道如何做到這一點(試圖尋找它,但無法找到答案還)。
會很感激,如果有人可以幫助我。
感謝
編輯:
好吧,既然我對數據進行加密是非常小(僅使用密碼)
我有一個客戶端和服務器,我沒有使用AES加密,當有人連接到客戶端時,我想確認他的密碼(他的加密密碼在android sdcard中的文件中),所以我想比較真實密碼和用戶在登錄頁面輸入的密碼。
I沒有私人的在客戶端上的關鍵,所以我不能解密加密的口令這已經是在設備上,所以我試圖比較加密的密碼(我認爲將是相同的,我現在才知道他們是不是)
也許你有一個想法我可以做什麼?如何比較一個密碼和加密的密碼,我只有公鑰
感謝
爲什麼你會想他們是平等的嗎?這在處理加密時聽起來不是什麼好事。 – Austin
你的最後一行代碼是不是應該使用'cipher2'而不是'cipher'? – david