[英]RSA OAEP, Golang Encrypt, Java Decrypt -BadPaddingException: Decryption error
[英]RSA OAEP , Golang Decrypt , Java Encrypt
Android客戶端加密消息,即java代碼
Cipher cipher = Cipher.getInstance("RSA/ECB/OAEPWITHSHA-256ANDMGF1PADDING");
byte[] publicBytes = Base64.decode(Configs.PUBLIC_KEY.getBytes("UTF-8"),Base64.DEFAULT);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey pubKey = keyFactory.generatePublic(keySpec);
cipher.init(Cipher.ENCRYPT_MODE, pubKey);
String plaintext = "test";
byte[] encryptedBytes = cipher.doFinal(plaintext.getBytes("UTF-8"));
String chipertext = Base64.encodeToString(encryptedBytes,Base64.DEFAULT);
Log.d(TAG,"encrypted (chipertext) = " + chipertext);
Golang服務器解密消息,golang代碼
func RsaDecrypt(encryptedString string) (string, error) {
base64DecodeBytes, err := base64.StdEncoding.DecodeString(encryptedString)
if err != nil {
return "", err
}
privateKeyBlock, _ := pem.Decode([]byte(privateKey))
var pri *rsa.PrivateKey
pri, parseErr := x509.ParsePKCS1PrivateKey(privateKeyBlock.Bytes)
if parseErr != nil {
return "", parseErr
}
decryptedData, decryptErr := rsa.DecryptOAEP(sha1.New(), rand.Reader, pri, base64DecodeBytes, nil)
if decryptErr != nil {
return "", decryptErr
}
return string(decryptedData), nil
}
和golang中的錯誤: crypto/rsa: decryption error
我無法更改服務器上的代碼,那么如何更改Java中的代碼?
需要你的幫助
謝謝。
兩個程序中的哈希函數不一樣。 在Java版本中,使用SHA-256
,但在Go版本中,使用SHA-1
。
您可以嘗試在Java端使用RSA/ECB/OAEPWithSHA-1AndMGF1Padding
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.