MD5从VBA到C#的跨平台解密

时间:2016-04-11 12:23:24

标签: c# vba encryption md5

我正在 var clip = await MediaClip.CreateFromFileAsync(pickedFile);//creating clip from storage file MediaComposition composition = new MediaComposition(); composition.Clips.Add(clip); VideoStabilizationEffectDefinition videoEffect = new VideoStabilizationEffectDefinition(); clip.VideoEffectDefinitions.Add(videoEffect);//adding videoEffect this.mediaElement.SetMediaStreamSource(composition.GenerateMediaStreamSource());//setting source to MediaElement 为我的公司创建一个新的应用程序。

我们的SQL数据库使用 MD5加密为用户存储密码,该密码是通过我们在C#中使用MS Access的其他应用程序创建的。

我们使用了本网站的代码 - http://www.di-mgt.com.au/crypto.html#MD5代表 VBA应用

我在该网站上看到我应该可以在另一个平台上解密密码:http://www.di-mgt.com.au/cryptoCrossPlatform.html

但我不确定如何在VBA中执行此操作。

我还查看了C#中的一些代码 - 但是解密会将不同的结果拉回到已存储在数据库中的内容。 http://www.codeproject.com/Articles/38951/How-To-Hash-Data-Using-MD-and-SHA

如何在新的CodeProject应用程序中验证此登录?

修改 这是我现在正在使用的哈希。

C#

2 个答案:

答案 0 :(得分:5)

  

我们的SQL数据库使用 MD5加密为用户存储密码,该密码是通过我们在MS Access中使用VBA的其他应用程序创建的。

不,你没有。 MD5 isn't encryption, it's a hash function。它也不太适合密码。你可能想要刹车并阅读how to safely store passwords in C#

使用Martin Steel's fork of Bcrypt.NET

代替MD5
// Calculating a hash
string hash = BCrypt.HashPassword(usersPassword, BCrypt.GenerateSalt());

// Validating a hash
if (BCrypt.Verify(usersPassword, hash)) {
    // Login successful
}

简单,易于推理和安全。

答案 1 :(得分:1)

MD5 密码方法不安全,因为该方法会受到rainbow table次攻击。

要说明问题,请尝试在您喜欢的网络浏览器中的评论25D55AD283AA400AF464C76D713C07AD中搜索您提到的编码密码,您很快就会看到它被列为12345678

您需要加强安全性并引入一些secure password hashing