Vb.net 什么是「;输入“;及;通行证;用于AES加密算法?

Vb.net 什么是「;输入“;及;通行证;用于AES加密算法?,vb.net,encryption,aes,Vb.net,Encryption,Aes,我只是在看AES加密算法,有一些问题 Function AESEncryption(ByVal input As String, ByVal pass As String) As String Dim AES As New System.Security.Cryptography.RijndaelManaged Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider Dim enc

我只是在看AES加密算法,有一些问题

Function AESEncryption(ByVal input As String, ByVal pass As String) As String
    Dim AES As New System.Security.Cryptography.RijndaelManaged
    Dim Hash_AES As New System.Security.Cryptography.MD5CryptoServiceProvider
    Dim encrypted As String = ""
    Try
        Dim hash(31) As Byte
        Dim temp As Byte() = Hash_AES.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes(pass))
        Array.Copy(temp, 0, hash, 0, 16)
        Array.Copy(temp, 0, hash, 15, 16)
        AES.Key = hash
        AES.Mode = Security.Cryptography.CipherMode.ECB
        Dim DESEncrypter As System.Security.Cryptography.ICryptoTransform = AES.CreateEncryptor
        Dim Buffer As Byte() = System.Text.ASCIIEncoding.ASCII.GetBytes(input)
        encrypted = Convert.ToBase64String(DESEncrypter.TransformFinalBlock(Buffer, 0, Buffer.Length))
        Return encrypted
    Catch ex As Exception
    End Try
End Function

我想知道参数输入是什么,过程是什么。是传递密码的密码,如果是,输入是什么。

类似AES的对称密码使您能够使用生成密文(
加密的
)的密钥隐藏一些明文(
输入
)。为了从密文中恢复明文,使用相同的密钥

AES支持128、192和256位的密钥,但密码通常具有任意长度(并且没有太多的熵)。此代码使用密码参数(
pass
)作为单个MD5哈希调用的输入,以派生128位的密钥。这不是很安全,因为MD5和AES速度很快,攻击者每秒可能会尝试大量密码(蛮力)来解密密文。更好的方法是使用迭代的基于密码的密钥派生函数,如(PBKDF2、bcrypt、scrypt)从密码派生密钥。请参阅更多:


ECB模式不是很安全,因为它将明文的某些结构泄露给密码,正如。为了实现语义安全,应该使用带有随机初始化向量(IV)的CBC模式


更好的方法是使用经过身份验证的模式(如GCM或EAX)或使用带有强大MAC功能(如HMAC-SHA256)的加密后MAC方案来增加真实性。

如果这是针对密码,则不加密。加密可以撤消,散列是一种方法street@Plutonix对于一个大学项目来说,加密就足够了。我同意应该使用散列,如果我的产品要商业化,我会使用它。加密PWs根本不是正确的做法。如果项目的目的是向您展示研究和学到的东西,请使用哈希。哈希比大多数加密方法简单,因为您必须编写解密方法来检查/验证密码,而相同的哈希方法可用于哈希PWs以进行保存和检查logins@Plutonix嗯,是的,你是对的,我将进一步研究散列。谢谢我发布的链接包含了您需要的所有代码,包括比较登录尝试