请教这段 C#的代码怎么改写成 Python

2018-01-20 16:34:42 +08:00
 ge2009

请教这段 C#的代码怎么改写成 Python

public class Encrypt
{
	public static string DoEncrypt(string ls_input)
	{
		MD5 mD = new MD5CryptoServiceProvider();
		ls_input = string.Format("aaa{0}bbb", ls_input);
		byte[] bytes = Encoding.Unicode.GetBytes(ls_input);
		byte[] array = mD.ComputeHash(bytes);
		string text = null;
		for (int i = 0; i < array.Length; i++)
		{
			text += array[i].ToString("x");
		}
		return string.Format("bkSystem_{0}", text);
	}
}


我自己写了一段,不过加密出来的值和 C#生成的值不一样,还请帮忙改下

import hashlib

data = '[{"lxdh":"134859393","content":"testbk"}]'

def encrypt(input):
    is_input = 'aaa%sbbb' %input
    print (is_input)
    is_input = hashlib.md5(is_input.encode('utf-8')).hexdigest()
    is_input = 'bkSystem_' + is_input

    print(is_input)


encrypt(data)



3702 次点击
所在节点    Python
8 条回复
huntzhan
2018-01-20 17:13:20 +08:00
不帮
jalena
2018-01-20 17:19:20 +08:00
不帮
geelaw
2018-01-20 17:30:14 +08:00
byte[] bytes = Encoding.Unicode.GetBytes(ls_input);

is_input.encode('utf-8')

是什么让你觉得 Unicode = UTF-8 ?在 Windows 语境下,Unicode 是 UTF16LE。
ge2009
2018-01-20 22:14:55 +08:00
@geelaw 嗯,看来是 Windows 上 Unicode 和 Python 上转化的区别,不过好像 UTF16LE 也是不对的,不知道该用什么字符集合适
ge2009
2018-01-20 23:15:49 +08:00
@geelaw 非常感谢,确实像你说的一样,我把 utf-8 改成 utf-16LE 就已经编码一致了,再一次感谢.
JacketPC
2018-01-21 11:07:24 +08:00
UTF-8 ~~哦。。楼上有人答了啊。。
ge2009
2018-01-21 16:34:57 +08:00
@JacketPC 嗯,是的
ge2009
2018-01-22 11:14:30 +08:00
@JacketPC
@geelaw
不好意思,我再请教下,我加密出来的东西好像基本一致,就是有时候会和 c#生成的多出来一至两个 0 是什么情况?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/424529

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX