2010-04-13 55 views
0

第一篇文章在这里。简单而安全的加密/解密asp到asp.net

我有一个asp/vb6网络应用程序,登录用户我想加密用户标识字段并将它传递(查询字符串)到一个asp.net应用程序,然后解密它做一个数据库查找。

我已经google'd它,当然,发现rot13,不够安全。我还在MD5/RC4上发现了一些命中,但没有找到任何加密/解密的好例子。

感谢,

迈克尔

+0

简单策略:需要通过SSL进行登录。 – Brian 2010-04-13 20:25:07

回答

1

人们普遍承认,你不应该这样的解密信息,而是比较加密加密。例如,MD5可以用于这种“陷门”的时尚。编码信息,然后存储MD5散列。当你需要认证时,编码新的信息并比较散列。未加密的信息从不公开或不可用。

如果这不适合您的情况,请查看Windows Crypto API,该API提供允许全周期加密/解密的备选方案。

1

我同意@布赖恩 - 不要去做自己的加密,加密很容易,直到你开始做密钥管理。除非你有非常好的V.E.R.Y.否则请使用SSL/TLS。很好的理由不这样做。

0

这是一个基本的加密示例。你会想找出自己的钥匙。我这样做是为了增加一层复杂性(我希望)。正如Jim指出的那样,您可以使用它来加密新密码,然后存储结果。在创建密码而不是试图解密该值(这恰恰相反)之后,您将加密输入的密码并将其与存储的值进行比较。

'combine these constants to build the encryption key' 
Private Const KEY1 = "abcde" 
Private Const KEY2 = "fghij" 
Private Const KEY3 = "klmno" 
Private Const KEY4 = "pqrst" 
Private Const KEY5 = "uvwxy" 

Private Function Encrypt(ByVal s As String, ByVal EncryptionType As CAPICOM.CAPICOM_ENCODING_TYPE) As String 
    Dim oEN As New CAPICOM.EncryptedData 
    Dim intENCType As CAPICOM.CAPICOM_ENCRYPTION_ALGORITHM 
    Dim strSecret As String 
    Dim intTries As Integer 

    On Error GoTo errEncrypt 

    intENCType = CAPICOM_ENCRYPTION_ALGORITHM_AES ' try this first and fall back if not supported' 

    With oEN 
startEncryption: 
     .Algorithm = intENCType 
     strSecret = KEY2 & KEY5 & KEY4 & KEY1 & KEY3 
     .SetSecret strSecret 
     strSecret = "" 
     .Content = s 
     ' the first encryption type needs to be base64 as the .content property' 
     ' can loose information if I try to manipulate a binary string' 
     .Content = StrReverse(.Encrypt(CAPICOM_ENCODE_BASE64)) 
     strSecret = KEY1 & KEY4 & KEY3 & KEY2 & KEY5 
     .SetSecret strSecret 
     strSecret = "" 
     Encrypt = .Encrypt(EncryptionType) 
    End With 

    Set oEN = Nothing 

    Exit Function 

errEncrypt: 
    If Err.Number = -2138568448 Then 
     ' if this is the first time the step the encryption back and try again 
     If intTries < 1 Then 
     intTries = intTries + 1 
     intENCType = CAPICOM_ENCRYPTION_ALGORITHM_3DES 
     Resume startEncryption 
     End If 
    End If 

    Err.Raise Err.Number, Err.Source & ":Encrypt", Err.Description 
    strSecret = "" 
    Set oEN = Nothing 

End Function