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 中的代码?