Baidu translation API and MD5 encryption Java use

And the key assigned by the platform (which can be viewed in the management console) is concatenated in the order of appid+q+salt+key to obtain string 1. 2. Do md5 on string 1 to get a 32-bit lowercase sign. I found an MD5 encryption algorithm from the Internet. English is still normal, but when Chinese characters appear, it will return one:












{"error_code":"54001","error_msg":"Invalid Sign"}
Found error code list:
54001 Signature error Please check your signature generation method

No way, I took a look at the demo provided by Baidu Translate:
PHP version, JS version, Python version, C version
Java? ? do not have. . . . . Pit father. . . Hence JS. . . Is it possible to convert to Java? ? ? After two days of struggle. . . . So ever. . . I gave up. . . After searching on the Internet, I can directly call the js file after Java 1.6. After some debugging, I finally succeeded. . .
code show as below:

import java.io.FileReader;
import java.util.Date;

import javax.script.Invocable;
import javax.script.ScriptEngine;
import javax.script.ScriptEngineManager;


public class TestMD5 {
    public static void main(String[] args) {

        String APPID = "APPID"; // 需要改成自己的APP ID
        String KEY = "KEY"; //需要改成自己的密钥
        String SALT = Long.toString(new Date().getTime());//随机数,官方提供的是获取时间
        String SOURCE = "足球";//翻译内容
        String SIGN = "";

        ScriptEngineManager manager = new ScriptEngineManager();
        ScriptEngine engine = manager.getEngineByName("javascript");

        String jsFileName = "md5.js"; // 读取js文件

        FileReader reader;
        try {
            reader = new FileReader(jsFileName);
            engine.eval(reader);
            if (engine instanceof Invocable) {
                Invocable invoke = (Invocable) engine; // 调用merge方法,并传入两个参数
                System.out.println(APPID + SOURCE + SALT + KEY);
                SIGN = (String) invoke.invokeFunction("MD5",
                        APPID + SOURCE + SALT + KEY);
                System.out.println(SIGN);
            }

            reader.close();

        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } // 执行指定脚本

    }
}

Operating results: d8e590e6dcd9034cb0206efdd04a164f
generated MD5 Baidu provided online ( http://app.baidu.com/yiten_md5 ) Results: Conventional encryption md5 ($ Pass)
32 bit MD5 uppercase: D8E590E6DCD9034CB0206EFDD04A164F
32 bit MD5 lowercase: d8e590e6dcd9034cb0206efdd04a164f
16 bit MD5 capitalized : DCD9034CB0206EFD
16-bit MD5 lowercase: dcd9034cb0206efd

Hope it will be useful for using Baidu Translate API;
reference article: http://blog.csdn.net/xzyxuanyuan/article/details/8062887

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325389529&siteId=291194637