首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP MD5/base64加密到C# md5/base64加密

PHP MD5/base64加密到C# md5/base64加密
EN

Stack Overflow用户
提问于 2010-12-14 05:40:04
回答 4查看 5.3K关注 0票数 1

我正在尝试将一些C# ASP.NET try服务集成到我的PHP应用程序中,但是有一个很大的问题。进行加密的方式与C#进行MD5加密的方式不兼容。我已经找到了将C# MD5转换为PHP MD5的解决方案,但是我不能更改C#代码。有没有一种方法可以改变PHP进行MD5加密的方式来匹配C#?c#加密的工作原理如下:

代码语言:javascript
复制
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.UTF8.GetBytes(stringToEncrypt);
String myString = Convert.ToBase64String(MD5.ComputeHash(bs));
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-12-14 05:51:12

由于MD5是一种已发布的算法,因此在PHP和c#中的实现是相同的。唯一的区别是它们产生的字节序列的字符串格式。PHP生成一个十六进制字符串,因此您只需要将十六进制转换为Base64。

票数 3
EN

Stack Overflow用户

发布于 2010-12-14 05:45:56

这可能是一个编码问题。确保您的PHP版本获得了字符串的UTF-8表示,应用MD5,然后将其转换为base64字符串,这样就没问题了。

票数 0
EN

Stack Overflow用户

发布于 2010-12-14 05:52:55

这是我以前在PHP和C#之间遇到过的编码问题。

如果PHP正在处理ISO-8859-1字符串(这可能就是您的情况),您可以这样做:

代码语言:javascript
复制
md5(utf8_encode($stringToEncrypt))

最好的测试方法是尝试一个包含a-z内容的非常简单的字符串,不管有什么编码问题,它都可以很好地工作。如果它能工作,而整个事情都不能工作,你就会有编码问题。

您还可以执行以下操作:

代码语言:javascript
复制
byte[] bs = System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(stringToEncrypt);

代码语言:javascript
复制
md5($stringToEncrypt)

将会工作得很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4433744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档