求助能够将汉字转化为MD5的方法
论坛中的找到的转化MD5的方法,好像仅对非中文汉字有效,比如用论坛中的lisp函数(YC:MD5 "你好") 得到的MD5 是 b94ae3c6d892b29cf48d9bea819b27b9,而用https://md5jiami.bmcx.com/这个网址生成的是7eca689f0d3389d9dea66ae112e5cfd7; 反正MD5不能反向验证。只要保证自己的算法是单向唯一就行,不需要非和别人一样的算法。你甚至可以把别人的结果直接反序当做自己的MD5. kozmosovia 发表于 2024-6-26 21:55反正MD5不能反向验证。只要保证自己的算法是单向唯一就行,不需要非和别人一样的算法。你甚至可以把别人的 ...
因为百度翻译api需要把翻译的原字符串转成MD5才能,进行正确调用,所以这个汉字转MD5就一定要正确;我研究的结果是这个汉字和放到txt文档里通过读取进行转换,但是转换的前提是这个TXT文档的编码格式需要是UTF-8的格式才正确转换。但是这边又存在一个问题,lisp在调用写入汉字到txt时,会自动把UTF-8格式的txt文档改为ANSI的编码格式保存,程序在读取转换为MD5时就又会出错。这时候,我就又想到是不是可以将ANSI格式的文档用lisp直接转换成UTF-8格式,在论坛里也找到了相关的代码程序,可是这时候又出现了新的问题:用论坛的方法转换出来的格式变成了带BOM的utf-8的编码格式,所以结果自然还是不行,所以发帖求助,看看是不是有直接将汉字转换为MD5的方法 胡扯呢吧,MD5是不能反向验证的。你传MD5给API,API不可能知道源码。一段1000个字的字符串,出来的MD5也就32个字符,你觉得天底下有可能根据这32个字符就可以推导出原来的1000个字符?
你说的转码恐怕是base64吧。 kozmosovia 发表于 2024-6-27 09:58
胡扯呢吧,MD5是不能反向验证的。你传MD5给API,API不可能知道源码。一段1000个字的字符串,出来的MD5也就3 ...
没有胡扯啊,可能我表达错了,给百度翻译API发送的经过MD5加密的汉字字符串,应该是百度用于验证的,确实是需要正确的汉字的MD5,你可以看看那下面的描述:Step1. 将请求参数中的 APPID(appid), 翻译 query(q,注意为UTF-8编码),随机数(salt),以及平台分配的密钥(可在管理控制台查看) 按照 appid+q+salt+密钥的顺序拼接得到字符串 1。
Step2. 对字符串 1 做 MD5 ,得到 32 位小写的 sign。
注:
1. 待翻译文本(q)参数需为 UTF-8 编码;
2. 在生成签名拼接 appid+q+salt+密钥 字符串时,q 不需要做 URL encode,在生成签名之后,发送 HTTP 请求之前才需要对要发送的待翻译文本字段 q 做 URL encode;
3.如遇到报 54001 签名错误,请检查您的签名生成方法是否正确,在对 sign 进行拼接和加密时,q 不需要做 URL encode,很多开发者遇到签名报错均是由于拼接 sign 前就做了 URL encode;
4.在生成签名后,发送 HTTP 请求时,如果将 query 拼接在URL上,需要对 query 做 URL encode Leemac有个算MD5的函数,不过速度比较慢,baitang好像也有个算MD5的fas。不过百度这个API需要的MD5,要是自己用,固定一个随机数,MD5是一毛一样的,所以没必要每次算,直接找网站算出来硬写进去就是了。 汉字内容一样,编码不同,md5的结果自然不同。
低版本的编码为 ansi , 也就是gb2312. 高版本的是 unicode , 网络上一般是utf8.
调用baidu api 需要编码一致。 vitalgg 发表于 2024-6-27 16:04
汉字内容一样,编码不同,md5的结果自然不同。
低版本的编码为 ansi , 也就是gb2312. 高版本的是 unicode...
是的啊,不过目前在QQ群找到前辈帮忙解决了,汉字转MD5的方法了{:1_1:}:handshake
页:
[1]