1. 程式人生 > >java php base64 使用差別 使用注意

java php base64 使用差別 使用注意

   在開發的時候遇到個現象。對方用php base64_encode() 對字串進行加密。但我這邊是用java解碼。導致出現問題。問題如下:

package com.tudou.test;

import java.io.IOException;  


/**  
 * <p>java base64編碼和解碼的演示類  
 * 注:base64編碼後通過url傳遞時,獲得時"="會給替換掉,  
 * 處理方式:在編碼前將"=","/","+" 替換成別的字元,在解碼之前替換回來  
 * </p>  
 * @author tw 2010-03-01  
 *  
 */ 
public class TestBase64Net {  
 
    /**  
     * 編碼  
     * @param filecontent  
     * @return String  
     */ 
    public static String encode(byte[] bstr){  
    return new sun.misc.BASE64Encoder().encode(bstr);  
    }  
 
    /**  
     * 解碼  
     * @param filecontent  
     * @return string  
     */ 
    public static byte[] decode(String str){  
    byte[] bt = null;  
    try {  
        sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();  
        bt = decoder.decodeBuffer( str );  
    } catch (IOException e) {  
        e.printStackTrace();  
    }  
        return bt;  
    }  
 
    /**  
     * @param args  
     */ 
    public static void main(String[] args) {  
        TestBase64Net te = new TestBase64Net();  
        //PHP 用base64 將union_id=102155_100001_01_01 加密後的字串為: dW5pb25faWQ9MTAyMTU1XzEwMDAwMV8wMV8wMQ
        //java 用sun.misc.BASE64Encoder().encode()進行解碼,結果為:union_id=102155_100001_01_01亂碼0
        System.out.println(new String(te.decode("dW5pb25faWQ9MTAyMTU1XzEwMDAwMV8wMV8wMQ")));
        //java 用sun.misc.BASE64Decoder 將union_id=102155_100001_01_01進行加密,結果為:dW5pb25faWQ9MTAyMTU1XzEwMDAwMV8wMV8wMQ==
        System.out.println(new String(te.encode("union_id=102155_100001_01_01".getBytes())));
        
        
    }  
 
}  

經過對比不難發現用php的base64_encode()   方法進行加密,JAVA 不能用sun.misc.BASE64Encoder().encode() 進行解密。那該怎麼辦?!

可以用apache的commons包 commons-codec-1.7.jar 中的org.apache.commons.codec.binary.Base64 進行解密。

import org.apache.commons.codec.binary.Base64;

public class TestBase64 {
	public static void main(String[] args) {
		System.out.println(new String(Base64.decodeBase64("dW5pb25faWQ9MTAyMTU1XzEwMDAwMV8wMV8wMQ".getBytes())));
	}
}

相關推薦

java php base64 使用差別 使用注意

   在開發的時候遇到個現象。對方用php base64_encode() 對字串進行加密。但我這邊是用java解碼。導致出現問題。問題如下: package com.tudou.test; import java.io.IOException; /** *

HMAC-SHA1簽名演算法(JAVAPHP) base64簽名演算法(PHP)

HMAC 根據RFC 2316(Report of the IAB,April 1998),HMAC(雜湊訊息身份驗證碼: Hashed Message Authentication Code)以及IPSec被認為是Interact安全的關鍵性核心協議。它不是雜湊函式,而是採用了將MD5或S

HMAC-SHA1簽名演算法(JAVAPHP) base64簽名演算法(PHP)

HMAC 根據RFC 2316(Report of the IAB,April 1998),HMAC(雜湊訊息身份驗證碼: Hashed Message Authentication Code)以及IPSec被認為是Interact安全的關鍵性核心協議。它不是雜湊函式,而是

成都傳智播客Java/PHP培訓就業率高

lan 培訓課程 ref -s size unit str 學生 http 依據傳智播客的數據統計,傳智播客的學員有五分之中的一個的能在畢業前找到愜意的工作,一半的學員能在畢業後一個月之內找到愜意的工作,一般在畢業後兩個月之內絕大多數同學都能找到愜意的工作。而且傳智播客

java中 ++前後差別試題及靜態變量一旦賦值不可改變

strong string 變量 void system 自身 mod span n) package javaTest; public class Increment { private static int k=0; public static void m

JAVA實現Base64編碼的三種方式

ack ons static nts bstr clas [] ram trace 摘要: Javabase64編碼的三種方式 有如下三種方式: 方式一:commons-codec.jar Java代碼 1. String base64String="whuang12

java,php,js;AES 互通加解密

str 知識庫 clipboard byte sys pbo rep decrypte view 1,Java端(依賴 common-codec jar) [java] view plain copy package com.jiaMi; imp

java 圖片base64互轉

++ pan 測試 class encoder col rgs 路徑 div public class ImgBase64 { public static void main(String[] args) //測試 {

通過php base64函數進行加密解密

process 剛才 com 定義 code pst alt watermark ext 通過php base64函數進行加密解密 實驗環境:windowsphp環境 (phpStudy一鍵環境包) 把測試的php文件放到此目錄下

php base64上傳圖片

php base64上傳圖片 $ymd = date("Ymdhis"); //圖片路徑地址 $img = str_replace(‘data:image/png;base64,‘, ‘‘, $img); $img = s

axis2 webservice入門知識(JS,Java,PHP調用實例源碼)

aar XML div .net conf 總結 syn setoption addchild 背景簡介 最近接觸到一個銀行接口的案子,臨時需要用到axis2 webservice。自己現學現總結的一些東西,留給新手。少走彎路。 Axis2簡介 ①采用名為 AXIOM(AX

Apache+php+MySQL 安裝注意細節及常見錯誤

1: 完成apache的安裝(一路預設) 1> 修改httpd.conf 中documentroot 為 E:\web server\Apache24\htdocs (即你的網站存放目錄) 有的直接修改這一行的 Define SRVROOT "E:\web server\Apache24",則

**Java實現Base64加密**

package com.beiruan.test; import org.apache.commons.codec.binary.Base64; import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; public clas

java 讀取 MySQL timestamp 注意

timestamp 讀取出來syso列印沒啥毛病 但是在頁面上顯示就來問題了[Object,Object],   ennn,學藝不精的我滿腦子what?趕緊的去長了長見識,查詢timestamp 型別欄位時有必要將其‘包裝一哈’,比如查詢Att_date欄位 其型別為time

面試題 - 使用Java泛型要注意什麼

     1、不能使用基本資料型別如int,而是使用Integer等包裝型別;         2、<T>這種,T是要使用大寫的T,而不能使用小寫   3、泛型類不可以繼承Ex

Java實現Base64編解碼

為什麼要用Base64編碼 在網路中傳輸資料都是使用ascii方式傳輸。對於一些圖片、視訊等資料,可能就會被編碼成ascii中不可見部分的編碼。網路中不同的路由裝置處理方式不同,有可能就會把這部分資料弄丟了。為了保證資料傳輸的正確性,可以使用Base64編碼將這些不可見資料編碼成可見資料。 Java實現B

Java圖片Base64編碼

//##########################################################//    String uploadDir = com.bstek.dorado.core.Configure.getString(  &

php base64圖片儲存

function base64_image_content($base64_image_content,$path){ //匹配出圖片的格式 if (preg_match('/^(data:\s*image\/(\w+);base64,)/', $base64_image_content

php base64解碼圖片 base64加密圖片還原

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

PHP開發的注意點(持續更新)

背景知識 這一篇部落格會持續更新和維護,主要是記錄一些平常工作上或者學習過程中遇到的一些注意事項,希望和大家學習與共勉。   1.關於json_encode和json_decode兩個函式的注意點: 1.json_decode():通常是將一個json字串轉成陣