php base64 加密 和javascript base64 不一样 请教JS和PHP的base64位加密解密的问题

java \u600e\u4e48\u5b9e\u73b0PHP\u7684base64\u52a0\u5bc6\uff0c\u4e24\u79cd\u8bed\u8a00\u7684base64\u52a0\u5bc6\u540e\u7684\u6570\u636e\u4e0d\u4e00\u81f4

\u3000\u3000\u5728\u5f00\u53d1\u7684\u65f6\u5019\u9047\u5230\u4e2a\u73b0\u8c61\u3002\u5bf9\u65b9\u7528PHP base64_encode() \u5bf9\u5b57\u7b26\u4e32\u8fdb\u884c\u52a0\u7c73\u3002\u4f46\u6211\u8fd9\u8fb9\u662f\u7528Java\u89e3\u9a6c\u3002\u5bfc\u81f4\u51fa\u73b0\u95ee\u9898\u3002\u95ee\u9898\u5982\u4e0b\uff1a
\u3000\u3000[java] view plain copy
\u3000\u3000package com.tudou.test;
\u3000\u3000import java.io.IOException;
\u3000\u3000/**
\u3000\u3000* java base64\u7f16\u7801\u548c\u89e3\u7801\u7684\u6f14\u793a\u7c7b
\u3000\u3000* \u6ce8\uff1abase64\u7f16\u7801\u540e\u901a\u8fc7url\u4f20\u9012\u65f6\uff0c\u83b7\u5f97\u65f6"="\u4f1a\u7ed9\u66ff\u6362\u6389\uff0c* \u5904\u7406\u65b9\u5f0f\uff1a\u5728\u7f16\u7801\u524d\u5c06"=","/","+" \u66ff\u6362\u6210\u522b\u7684\u5b57\u7b26\uff0c\u5728\u89e3\u7801\u4e4b\u524d\u66ff\u6362\u56de\u6765*
\u3000\u3000* @author tw 2010-03-01
\u3000\u3000*
\u3000\u3000*/
\u3000\u3000public class TestBase64Net {
\u3000\u3000/**
\u3000\u3000* \u7f16\u9a6c
\u3000\u3000* @param filecontent
\u3000\u3000* @return String
\u3000\u3000*/
\u3000\u3000public static String encode(byte[] bstr){return new sun.misc.BASE64Encoder().encode(bstr);}
\u3000\u3000/**
\u3000\u3000* \u89e3\u7801
\u3000\u3000* @param filecontent
\u3000\u3000* @return string
\u3000\u3000*/
\u3000\u3000public static byte[] decode(String str){
\u3000\u3000byte[] bt = null;
\u3000\u3000try {
\u3000\u3000sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();bt = decoder.decodeBuffer( str );
\u3000\u3000} catch (IOException e) {
\u3000\u3000e.printStackTrace();
\u3000\u3000}
\u3000\u3000return bt;
\u3000\u3000}
\u3000\u3000/**
\u3000\u3000* @param args
\u3000\u3000*/
\u3000\u3000public static void main(String[] args) {
\u3000\u3000TestBase64Net te = new TestBase64Net();
\u3000\u3000//PHP \u7528base64 \u5c06union_id=102155_100001_01_01 \u52a0\u7c73\u540e\u7684\u5b57\u7b26\u4e32\u4e3a\uff1a dW5pb25faWQ9MTAyMTU1XzEwMDAwMV8wMV8wMQ//java \u7528sun.misc.BASE64Encoder().encode()\u8fdb\u884c\u89e3\u9a6c\uff0c\u7ed3\u679c\u4e3a\uff1aunion_id=102155_100001_01_01\u4e71\u7801\u000f0System.out.println(new String(te.decode("dW5pb25faWQ9MTAyMTU1XzEwMDAwMV8wMV8wMQ")));//java \u7528sun.misc.BASE64Decoder \u5c06union_id=102155_100001_01_01\u8fdb\u884c\u52a0\u7c73\uff0c\u7ed3\u679c\u4e3a\uff1adW5pb25faWQ9MTAyMTU1XzEwMDAwMV8wMV8wMQ==System.out.println(new String(te.encode("union_id=102155_100001_01_01".getBytes())));}
\u3000\u3000}
\u3000\u3000\u7ecf\u8fc7\u5bf9\u6bd4\u4e0d\u96be\u53d1\u73b0\u7528php\u7684base64_encode() \u65b9\u6cd5\u8fdb\u884c\u52a0\u7c73\uff0cJAVA \u4e0d\u80fd\u7528sun.misc.BASE64Encoder().encode() \u8fdb\u884c\u89e3\u7c73\u3002\u90a3\u8be5\u600e\u4e48\u529e\uff1f\uff01
\u3000\u3000\u53ef\u4ee5\u7528apache\u7684commons\u5305 commons-codec-1.7.jar \u4e2d\u7684org.apache.commons.codec.binary.Base64 \u8fdb\u884c\u89e3\u7c73\u3002
\u3000\u3000[java] view plain copy
\u3000\u3000import org.apache.commons.codec.binary.Base64;public class TestBase64 {
\u3000\u3000public static void main(String[] args) {
\u3000\u3000System.out.println(new String(Base64.decodeBase64("dW5pb25faWQ9MTAyMTU1XzEwMDAwMV8wMV8wMQ".getBytes())));}
\u3000\u3000}
?

\u5177\u4f53\u4ee3\u7801\u5982\u4e0b\uff1a
<?php
$ch = curl_init();
$timeout = 5;
curl_setopt ($ch, CURLOPT_URL, '');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
echo $file_contents;
?>
​PHP \u72ec\u7279\u7684\u8bed\u6cd5\u6df7\u5408\u4e86C\u3001Java\u3001Perl\u4ee5\u53caPHP\u81ea\u521b\u7684\u8bed\u6cd5\u3002
\u5b83\u53ef\u4ee5\u6bd4CGI\u6216\u8005Perl\u66f4\u5feb\u901f\u5730\u6267\u884c\u52a8\u6001\u7f51\u9875\u3002\u7528PHP\u505a\u51fa\u7684\u52a8\u6001\u9875\u9762\u4e0e\u5176\u4ed6\u7684\u7f16\u7a0b\u8bed\u8a00\u76f8\u6bd4\uff0cPHP\u662f\u5c06\u7a0b\u5e8f\u5d4c\u5165\u5230HTML\uff08\u6807\u51c6\u901a\u7528\u6807\u8bb0\u8bed\u8a00\u4e0b\u7684\u4e00\u4e2a\u5e94\u7528\uff09\u6587\u6863\u4e2d\u53bb\u6267\u884c\uff0c
\u6267\u884c\u6548\u7387\u6bd4\u5b8c\u5168\u751f\u6210HTML\u6807\u8bb0\u7684CGI\u8981\u9ad8\u8bb8\u591a\uff1b
PHP\u8fd8\u53ef\u4ee5\u6267\u884c\u7f16\u8bd1\u540e\u4ee3\u7801\uff0c\u7f16\u8bd1\u53ef\u4ee5\u8fbe\u5230\u52a0\u5bc6\u548c\u4f18\u5316\u4ee3\u7801\u8fd0\u884c\uff0c\u4f7f\u4ee3\u7801\u8fd0\u884c\u66f4\u5feb\u3002

你在线加密用的是GB2312
而你PHP采用的是UTF-8
这两种编码编出来的字节是不一样
因此BASE64通过字节编码的
导致你看到的结果不一样。
如果你想PHP加出来和在线加密一样,你可以把编码转一致就可以了。
<?php echo base64_encode(iconv('utf-8','gbk',"胡萝卜")); ?>

这样子就能和在线加密是一样的了。

base64加密方法一样的,正常情况下,结果应该是一样的。

字符编码不同导致的,你统一一下文件保存的编码格式便可。
建议贴下源码,帮你分析下

百度 php javascript base64

扩展阅读:永久不收费免费的聊天软件 ... java base64加密 ... base64 在线解码 ... base64前端加密后端解密 ... base64位密码在线加密 ... 在线加密解密工具base64 ... 免费sg11在线加密系统源码 ... php 加密 zend ... base64解码 在线 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网