第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用相同的密鑰在 C# 中加密并在 Java 中解密

使用相同的密鑰在 C# 中加密并在 Java 中解密

MMTTMM 2023-03-02 10:28:31
我正準(zhǔn)備在服務(wù)器端 (c#) 進(jìn)行加密,并在 android 端 (Java) 為我的 api 密鑰進(jìn)行解密。c# 中的加密/解密都可以。而且,在 Java 中,加密/解密也可以。主要問題是用 C# 生成的密文與 java 不同,盡管我使用了相同的密鑰。C# 生成的密文無法在 Java 中解密。我試過如下。在爪哇 public static String key = "aaaaaaaabbccccbbaaaaaaaabbccccbb";    private static byte[] key_Array = Base64.decode(key,Base64.DEFAULT);    public static String encrypt(String plainText)    {        try        {            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");            // Initialization vector.            // It could be any value or generated using a random number generator.            byte[] iv = { 1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 1, 7, 7, 7, 7 };            IvParameterSpec ivspec = new IvParameterSpec(iv);            Key secretKey = new SecretKeySpec(key_Array, "AES");            cipher.init(Cipher.ENCRYPT_MODE, secretKey, ivspec);            return Base64.encodeToString(cipher.doFinal(plainText.getBytes()),Base64.DEFAULT);        }        catch (Exception e)        {            System.out.println("[Exception]:"+e.getMessage());        }        return null;    }    public static String decrypt(String encryptedMessage)    {        try        {            //Cipher _Cipher = Cipher.getInstance("AES");            //Cipher _Cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");            Cipher _Cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");            // Initialization vector.            // It could be any value or generated using a random number generator.            byte[] iv = { 1, 2, 3, 4, 5, 6, 6, 5, 4, 3, 2, 1, 7, 7, 7, 7 };            IvParameterSpec ivspec = new IvParameterSpec(iv);            Key SecretKey = new SecretKeySpec(key_Array, "AES");            _Cipher.init(Cipher.DECRYPT_MODE, SecretKey, ivspec);            byte decodedMessage[] = Base64.decode(encryptedMessage,Base64.DEFAULT);            return new String(_Cipher.doFinal(decodedMessage));        }
查看完整描述

1 回答

?
慕娘9325324

TA貢獻(xiàn)1783條經(jīng)驗 獲得超4個贊

問題在于,在您的 Java 代碼中,您僅使用 192 位密鑰,而在 C# 版本中,您使用的是 256 位密鑰。


您的 base64 編碼密鑰是 32 個字符,轉(zhuǎn)換為 24 個字節(jié),即只有 192 位。


這些是 Java 中有問題的行:


public static String key = "aaaaaaaabbccccbbaaaaaaaabbccccbb"; // 32 characters

private static byte[] key_Array = Base64.decode(key, Base64.DEFAULT); // 24 bytes

只需更改 Java 鍵數(shù)組的創(chuàng)建即可解決問題。就像是:


public static String key = "aaaaaaaabbccccbbaaaaaaaabbccccbb"; // 32 characters

private static byte[] key_Array = new byte[32]; // 32 bytes


static {

    // copy the 24 base64-decoded bytes to the key array

    System.arraycopy(Base64.decode(key, Base64.DEFAULT), 0, key_Array, 0, 24);

}


查看完整回答
反對 回復(fù) 2023-03-02
  • 1 回答
  • 0 關(guān)注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號