需要注意的是,我们这个的nodejsnative里用的,而不是在浏览器中使用,所以*jsencrypt**只要导入进来,就会报 navigator is not defined 的问题,这个时候,需要去 *jsencrypt.js 中修改一下源代码,参考的是 jsencrypt 在 github上的 issue #21,也就是上面的第四条参考。
—–BEGIN PUBLIC KEY—– MIGeMA0GCSqGSIb3DQEBAQUAA4GMADCBiAKBgGsgGKaHUbFj5YnUpaF1o8dqReXJ ZWE4UpPZE3A8wzlU9W8A9xxsgee2CmJDmscvn9rAzABXDH6L4+bT+Xk4MbPHxW4X OxmWX4fAMyeIChZKqC1Z4CB1M/h1EzXMLWqVOc3YQNFiJg/7Ftcc1uwlgsOZlXI0 68m3f+26eMKHew6lAgMBAAE= —–END PUBLIC KEY—–
output = result.str(); return !output.empty(); } //翻译过来的jsencrypt : base64tohex string Client::b64tohex(const string& input) { int k = 0; int slop,v; vector<unsignedchar> vs; for(int i=0; i< input.size(); i++) { if(input[i] == b64pad) break; v = b64map.find_first_of(input[i],0); if(v < 0) continue; if( k == 0) { vs.push_back(BI_RM.at(v >> 2)); slop = v & 3; k = 1; }elseif(k == 1) { vs.push_back(BI_RM.at((slop << 2) |(v >> 4))); slop = v & 0xf; k = 2; }elseif(k == 2) { vs.push_back(BI_RM.at(slop)); vs.push_back(BI_RM.at(v >> 2)); slop = v & 3; k = 3; }else { vs.push_back(BI_RM.at((slop << 2)|(v >> 4))); vs.push_back(BI_RM.at(v & 0xf)); k = 0; } } string res(vs.begin(),vs.end()); return res; }
联调前端输出如下,前端是在hex2b64里加了日志输出的:
before hex2b64: 1424343c15c7345163a7a4f8a19b0067fa309ae2e1ea6cc96195e1aeb021a2080c5231c2331a1b054114c07f3c8906e7085049302d53fa2d3535d9b0eeb4d052682bf53c1b6289c405fb901424a147a8c9d7b3e9736facd23eeb6bd7bfb8d81632ae64fa09b04722b0ed21efa6abb39d2a3cecea6fef618d2cf2be75ee25d534
after hex2b64: FCQ0PBXHNFFjp6T4oZsAZ/owmuLh6mzJYZXhrrAhoggMUjHCMxobBUEUwH88iQbnCFBJMC1T+i01Ndmw7rTQUmgr9TwbYonEBfuQFCShR6jJ17Ppc2+s0j7ra9e/uNgWMq5k+gmwRyKw7SHvpquznSo87Opv72GNLPK+de4l1TQ=
AESKey : g9unnHKOXIj36Ee3
服务端输出:
addr:0.0.0.0 port:8888 client:192.168.2.18 Read 886bytes from client complete. Read 172bytes from client complete. Key : —–BEGIN RSA PRIVATE KEY—– MIICXAIBAAKBgGx6zMVC1v2r5sUSoD1udXKmJD6hTItGa+JElo5LB6xIszcWpEAq Zk/7Opg8WNvaYePdu+muwKrHf7K1yBqFeIshKFs5fEEwDvOyB6P3E3nGFF/ghMVK Cf75MJoHVB/WkIpavVC7ekph9A7w7yM04qe/UW/4jNu8YVSwGLkCJEsrAgMBAAEC gYAMs1/wJIA5WPv+zMx4BMu5bZxGvOnSUJ9m8XLTHBO85xIcfAkk/hHWgWp90mrw 6qOVYyuSE4S5OfxIdyIDgOb48+nCIOIdSkpkS7xHbB1VFEoRjcVtoKzQjxQO71tH cq0DBTh2ITjcKfrL/mJO7Lju+3r79WaRuv3v2TRvRi7uGQJBALchorA+6VmCpsD3 q25J7hjUJsW5yWZb4uQ+FPsyRXdzkXQnpQYnpjbU3MYkkaHNhpbzgWN9eNi2wdch A653lBUCQQCXpOWfWge33TAk/ZUHz62WQiFJzZKwpvZIxiU/CcVal/6ZIZ60/VE7 RW6EIRqZMV13LFa7JNW1ZuJIKNZNj/I/AkEAjFHRfoo18sgRTbp4OMGdFpk4PDjn AO9XItwO54rVf3ml8gKOh/DJgyoHICvVCs2YWwGqGrmBZ0xhqp05XO1zIQJAL56U jOnUqqRGzhbjicRpmlnB4k8v1VFY3Zl7cMQ8uSopxSSNlgBGVfqDrfJHS/v4gcfm pHX4tjJMtKQ+R7UAOQJBALLBwYhZ/vic6DcQTWJIZOy/mnJYh8ijqi0CD/5JhoPD Q7mRZIyGEX26KUSNteCGwBE5DNy8lhjXIk2PY0nIY64= —–END RSA PRIVATE KEY—– Content : 1424343c15c7345163a7a4f8a19b0067fa309ae2e1ea6cc96195e1aeb021a2080c5231c2331a1b054114c07f3c8906e7085049302d53fa2d3535d9b0eeb4d052682bf53c1b6289c405fb901424a147a8c9d7b3e9736facd23eeb6bd7bfb8d81632ae64fa09b04722b0ed21efa6abb39d2a3cecea6fef618d2cf2be75ee25d534 Failure. Error Code:67522668 error:0406506C:rsa routines:RSA_EAY_PRIVATE_DECRYPT:data greater than mod len Exception: read_some: End of file