加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

散列算法和加密算法的区别

(2014-02-08 14:55:41)
分类: VBA

当存储加密后的密码时,这个密码可能会被解密。HASH算法是单向的,所以可以用来把明文密码散列后存储。

加密算法是双向的,由加密后的密文可以解密得到原文,而散列算法从数学上来说无法从密文得到原文。AES是加密算法,MD5,SHA1是散列算法。

MD5可以用冲突collision破解,SHA256对冲突比较强壮。

Public Function EncryptString(strText As String, strKey As String) As String

    Dim Cap As New CAPICOM.EncryptedData

   

    With Cap

        .Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_DES

        .SetSecret strKey

        .Content = strText

        EncryptString = Cap.Encrypt

    End With

End Function

 

Public Function DecryptString(strText As String, strKey As String) As String

    Dim Cap As New CAPICOM.EncryptedData

   

    With Cap

        .Algorithm = CAPICOM_ENCRYPTION_ALGORITHM_DES

        .SetSecret strKey

        .Decrypt strText

        DecryptString = Cap.Content

    End With

End Function

 

2个函数可以用来进行加密和解密。

Public Function EncryptHash(ByVal strText As String) As String

    Dim capHash As New CAPICOM.HashedData

 

    With capHash

        .Algorithm = CAPICOM_HASH_ALGORITHM_MD5

        .Hash strText

        EncryptHash = .Value

    End With

End Function

这个可以用来得到strText的哈希值。

做哈希时,最好产生一段随机字符串和原文连接后在做哈希,这叫做salt。可以防止基于彩虹表的攻击。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有