2017-03-10 90 views
0

我正在使用SHA-256實現我自己的RSA-OAEP版本。我想通過使用RSA-OAEP和SHA-256將它與Java中Cipher類的輸出進行比較來對其進行測試。根據PKCS#1,RSA-OAEP需要一個標籤,默認情況下它是一個空字符串。但是,我找不到在內置類中輸入標籤的方法。我的實現似乎對加密和解密都正常工作,但Cipher類產生不同的輸出。有沒有Cipher類使用的默認標籤?Java中內置的RSA-OAEP加密是否有默認標籤?

回答

2

在PKCS1v2.1中稱爲標籤L RSAES-OAEP在v2.0中被稱爲編碼參數P;請參閱A.2.1中的pSourceAlgorithm說明。 Java API保留了舊術語,大概是爲了兼容性,默認值實際上是一個空字節字符串,在Java中以長度爲0的byte數組實現。請參見https://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/PSource.PSpecified.html。請注意,即使P-call-me-L爲空,其在掩碼前進入數據庫的散列也不爲空。

當你說'不同的輸出'時,你會意識到OAEP是隨機的(以一種證明不會泄漏信息給敵手的方式),並且每個相同明文的加密都應該產生一個唯一的密文,但是所有的密碼應該解密回相同的明文,對吧?