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 中的代碼?
1 回答

紫衣仙女
TA貢獻1839條經(jīng)驗 獲得超15個贊
兩個程序中的哈希函數(shù)不一樣。在 Java 版本SHA-256
中使用,但在 Go 版本SHA-1
中使用。
你可以嘗試RSA/ECB/OAEPWithSHA-1AndMGF1Padding
在Java端使用。
- 1 回答
- 0 關注
- 489 瀏覽
添加回答
舉報
0/150
提交
取消