簡體   English   中英

將加密算法從VB.NET轉換為Java(Android)

[英]Convert Encryption Algorithm from VB.NET to Java (Android)

我正在使用以下算法對VB.NET中的字符串進行加密和解密,並希望在Android中也執行相同的方法。 誰能告訴我類似的Android(Java)算法

加密:

Private Function decryptStr(ByVal key As String, ByVal enc As String) As String
    Try
        DES.Key = Hash.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(key))
        DES.Mode = System.Security.Cryptography.CipherMode.ECB
        Dim DESDecrypter As System.Security.Cryptography.ICryptoTransform = DES.CreateDecryptor
        Dim Buffer As Byte() = Convert.FromBase64String(enc)
        respass = System.Text.ASCIIEncoding.ASCII.GetString(DESDecrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
        Return respass
    Catch ex As Exception
        Return enc
    End Try
End Function

解密:

Public Function decryptStr(ByVal encrypted As String, ByVal key As String) As String
    Try
        DES.Key = Hash.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(key))
        DES.Mode = System.Security.Cryptography.CipherMode.ECB
        Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = DES.CreateEncryptor
        Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(encrypted)
        respass = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
        Return respass
    Catch ex As Exception
        Return encrypted
    End Try
End Function
  1. 對於密碼,請使用Cipher.getInstance("DES/ECB/PKCS5Padding")
  2. 為了使字節輸入到哈希函數中以獲取String.getBytes(key, Charset.forName("ASCII"))使用String.getBytes(key, Charset.forName("ASCII"))new String(keyData, Charset.forName("ASCII"))
  3. 使用(尚未指定)哈希函數。 之后請確保將密鑰大小設置為8個字節,因為DES密鑰僅需要8個字符。 應該使用MessageDigest.getInstance("MD5")"SHA1"之類的技巧。
  4. 只需執行new SecretKeySpec(<my 8 byte byte array>, "DES") ,即可創建密鑰
  5. 默認情況下未安裝Base 64編碼/解碼,請查看Apache的commons-codec進行此操作。

如果您在多個地方使用字符編碼,只需創建一個常量:

private static final Charset ASCII = Charset.forName("ASCII");

獲取字節數組的一部分的新方法是:

Arrays.copyOfRange(byte[] original, int from, int to): byte[]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM