當前位置:首頁 » 編程語言 » java加密base64

java加密base64

發布時間: 2022-09-02 20:26:53

java怎麼樣實現Base64加密解密

package test;
import java.io.IOException;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

public class Test {
public static void main(String[] args) {
String str = "java12345";
String ret = null;
ret = new BASE64Encoder().encode(str.getBytes());
System.out.println("加密前:"+str+" 加密後:"+ret);
str = "amF2YTEyMzQ1";
try {
ret = new String(new BASE64Decoder().decodeBuffer(str));
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("解密前:"+str+" 解密後:"+ret);
}
}

❷ java 怎麼實現php的base64加密,兩種語言的base64加密後的數據不一致

在開發的時候遇到個現象。對方用PHP base64_encode() 對字元串進行加米。但我這邊是用Java解馬。導致出現問題。問題如下:
[java] view plain
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 加米後的字元串為: //java 用sun.misc.BASE64Encoder().encode()進行解馬,結果為:union_id=102155_100001_01_01亂碼0System.out.println(new String(te.decode("")));//java 用sun.misc.BASE64Decoder 將union_id=102155_100001_01_01進行加米,結果為:==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 進行解米。
[java] view plain
import org.apache.commons.codec.binary.Base64;public class TestBase64 {
public static void main(String[] args) {
System.out.println(new String(Base64.decodeBase64("".getBytes())));}
}
?

❸ 求java加密源代碼(MD5,base64)

import java.security.*;
import javax.crypto.*;

/**
* 本例解釋如何利用DES私鑰加密演算法加解密
*
* @author Devon
* @version 1.0 04/03/10
*/
public class SingleKeyExample {

public static void main(String[] args) {
try {
String algorithm = "DES"; //定義加密演算法,可用 DES,DESede,Blowfish
String message = "Hello World. 這是待加密的信息";

// 生成個DES密鑰
KeyGenerator keyGenerator = KeyGenerator.getInstance(algorithm);
keyGenerator.init(56); //選擇DES演算法,密鑰長度必須為56位
Key key = keyGenerator.generateKey(); //生成密鑰

// 生成Cipher對象
Cipher cipher = Cipher.getInstance("DES");

//用密鑰加密明文(message),生成密文(cipherText)
cipher.init(Cipher.ENCRYPT_MODE, key); //操作模式為加密(Cipher.ENCRYPT_MODE),key為密鑰
byte[] cipherText = cipher.doFinal(message.getBytes()); //得到加密後的位元組數組
System.out.println("加密後的信息: " + new String(cipherText));

//用密鑰加密明文(plainText),生成密文(cipherByte)
cipher.init(Cipher.DECRYPT_MODE, key); //操作模式為解密,key為密鑰
byte[] sourceText = cipher.doFinal(cipherText); //獲得解密後位元組數組
System.out.println("解密後的信息: " + new String(sourceText));
} catch (Exception ex) {
ex.printStackTrace();
}
}

}

/**
* @author Devon
*/

import java.security.*;
import java.security.spec.*;
import javax.crypto.*;

public class PairKeyExample {

public static void main(String argv[]) {
try {
String algorithm = "RSA"; //定義加密演算法,可用 DES,DESede,Blowfish
String message = "張三,你好,我是李四";

//產生張三的密鑰對(keyPairZhang)
KeyPairGenerator keyGeneratorZhang =
KeyPairGenerator.getInstance(algorithm); //指定採用的演算法
keyGeneratorZhang.initialize(1024); //指定密鑰長度為1024位
KeyPair keyPairZhang = keyGeneratorZhang.generateKeyPair(); //產生密鑰對
System.out.println("生成張三的公鑰對");

// 張三生成公鑰(publicKeyZhang)並發送給李四,這里發送的是公鑰的數組位元組
byte[] publicKeyZhangEncode = keyPairZhang.getPublic().getEncoded();

//通過網路或磁碟等方式,把公鑰編碼傳送給李四
//李四接收到張三編碼後的公鑰,將其解碼
KeyFactory keyFacoryLi = KeyFactory.getInstance(algorithm); //得到KeyFactory對象
X509EncodedKeySpec x509KeySpec =
new X509EncodedKeySpec(publicKeyZhangEncode); //公鑰採用X.509編碼
PublicKey publicKeyZhang = keyFacoryLi.generatePublic(x509KeySpec); //將公鑰的KeySpec對象轉換為公鑰
System.out.println("李四成功解碼,得到張三的公鑰");

//李四用張三的公鑰加密信息,並發送給李四
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding"); //得到Cipher對象
cipher.init(Cipher.ENCRYPT_MODE, publicKeyZhang); //用張三的公鑰初始化Cipher對象
byte[] cipherMessage = cipher.doFinal(message.getBytes()); //得到加密信息
System.out.println("加密後信息:" + new String(cipherMessage));
System.out.println("加密完成,發送給李四...");

//張三用自己的私鑰解密從李四處收到的信息
cipher.init(Cipher.DECRYPT_MODE, keyPairZhang.getPrivate()); //張三用其私鑰初始化Cipher對象
byte[] originalMessage = cipher.doFinal(cipherMessage); //得到解密後信息
System.out.println("張三收到信息,解密後為:" + new String(originalMessage));
} catch (Exception ex) {
ex.printStackTrace();
}
}
}

❹ php的base64加密,怎麼調整才能和java的base64的加密結果一致呢

phpbase64以後每76個字元加一個換行,
function javaBase64Encode($str)
{
$str = base64_encode($str);
$strLength = strlen($str);
$n = intval($strLength / 76);
if ($n <= 0) {
return $str;
}
for ($i = 1; $i <= $n; $i++) {
$position = 76 * $i + ($i - 1);
$str = substr_replace($str, PHP_EOL, $position, 0);
}
return $str;

}

function javaBase64Decode($str)
{
$strLength = strlen($str);
$n = intval($strLength / 76);
if ($n <= 0) {
return $str;
}
for ($i = $n; $i >= 1; $i--) {
$position = 76 * $i + ($i - 1);
$str = substr_replace($str, "", $position, 1);
}
return base64_decode($str);
}
或者使用chunk_split 函數也可以,默認就是76,而且不是所有的java代碼都需要這樣轉,要看java調用的是什麼類庫,有一些是不用的

❺ javaee6怎麼進行base64加密

package com.raqsoft.common;

public class Base64
{
private static final char intToBase64[] = {
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd',
'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', '+', '/'
};

private static final char intToAltBase64[] = {
'!', '"', '#', '$', '%', '&', '\'', '(', ')', ',',
'-', '.', ':', ';', '<', '>', '@', '[', ']', '^',
'`', '_', '{', '|', '}', '~', 'a', 'b', 'c', 'd',
'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x',
'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', '+', '?'
};

private static final byte base64ToInt[] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 62, -1, -1, -1, 63, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, -1, -1,
-1, -1, -1, -1, -1, 0, 1, 2, 3, 4,
5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, -1, -1, -1, -1, -1, -1, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51
};

private static final byte altBase64ToInt[] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 0, 1, 2, 3, 4, 5, 6,
7, 8, -1, 62, 9, 10, 11, -1, 52, 53,
54, 55, 56, 57, 58, 59, 60, 61, 12, 13,
14, -1, 15, 63, 16, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 17, -1, 18, 19, 21, 20, 26, 27, 28,
29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
49, 50, 51, 22, 23, 24, 25
};

public static String byteArrayToBase64(byte bb[]) {
return byteArrayToBase64(bb, false);
}

public static String byteArrayToAltBase64(byte bb[]) {
return byteArrayToBase64(bb, true);
}

private static String byteArrayToBase64(byte bb[], boolean flag) {
int i = bb.length;
int j = i / 3;
int k = i - 3 * j;
int l = 4 * ((i + 2) / 3);
StringBuffer stringbuffer = new StringBuffer(l);
char ac[] = flag ? intToAltBase64 : intToBase64;
int i1 = 0;
for(int j1 = 0; j1 < j; j1++) {
int k1 = bb[i1++] & 0xff;
int i2 = bb[i1++] & 0xff;
int k2 = bb[i1++] & 0xff;
stringbuffer.append(ac[k1 >> 2]);
stringbuffer.append(ac[k1 << 4 & 0x3f | i2 >> 4]);
stringbuffer.append(ac[i2 << 2 & 0x3f | k2 >> 6]);
stringbuffer.append(ac[k2 & 0x3f]);
}

if(k != 0) {
int l1 = bb[i1++] & 0xff;
stringbuffer.append(ac[l1 >> 2]);
if(k == 1) {
stringbuffer.append(ac[l1 << 4 & 0x3f]);
stringbuffer.append("==");
} else {
int j2 = bb[i1++] & 0xff;
stringbuffer.append(ac[l1 << 4 & 0x3f | j2 >> 4]);
stringbuffer.append(ac[j2 << 2 & 0x3f]);
stringbuffer.append('=');
}
}
return stringbuffer.toString();
}

public static byte[] base64ToByteArray(String s) {
return base64ToByteArray(s, false);
}

public static byte[] altBase64ToByteArray(String s) {
return base64ToByteArray(s, true);
}

private static byte[] base64ToByteArray(String s, boolean flag) {
byte bb[] = flag ? altBase64ToInt : base64ToInt;
int i = s.length();
int j = i / 4;
if(4 * j != i)
throw new IllegalArgumentException("String length must be a multiple of four.");
int k = 0;
int l = j;
if(i != 0) {
if(s.charAt(i - 1) == '=') {
k++;
l--;
}
if(s.charAt(i - 2) == '=')
k++;
}
byte bc[] = new byte[3 * j - k];
int i1 = 0;
int j1 = 0;
for(int k1 = 0; k1 < l; k1++) {
int l1 = base64toInt(s.charAt(i1++), bb);
int j2 = base64toInt(s.charAt(i1++), bb);
int l2 = base64toInt(s.charAt(i1++), bb);
int j3 = base64toInt(s.charAt(i1++), bb);
bc[j1++] = (byte)(l1 << 2 | j2 >> 4);
bc[j1++] = (byte)(j2 << 4 | l2 >> 2);
bc[j1++] = (byte)(l2 << 6 | j3);
}

if(k != 0) {
int i2 = base64toInt(s.charAt(i1++), bb);
int k2 = base64toInt(s.charAt(i1++), bb);
bc[j1++] = (byte)(i2 << 2 | k2 >> 4);
if(k == 1) {
int i3 = base64toInt(s.charAt(i1++), bb);
bc[j1++] = (byte)(k2 << 4 | i3 >> 2);
}
}
return bc;
}

private static int base64toInt(char c, byte bb[]) {
byte b = bb[c];
if(b < 0)
throw new IllegalArgumentException("Illegal character " + c);
else
return b;
}

public static void main(String[] args) {
String s = "0123456789";
byte[] b = s.getBytes();
s = Base64.byteArrayToBase64(b);
System.out.println(s);
b = Base64.base64ToByteArray(s);
System.out.println(new String(b));
}
}

❻ java base64加密安全嗎

base64不是加密,是編碼方法,當然可以解碼了。
不安全

❼ 如何將返回實體類base加密java

Base64是網路上最常見的用於傳輸8Bit位元組碼的編碼方式之一。
Base64就是一種基於64個可列印字元來表示二進制數據的方法。可查看RFC2045~RFC2049,上面有MIME的詳細規范。Base64編碼是從二進制到字元的過程,可用於在HTTP環境下傳遞較長的標識信息。採用Base64編碼具有不可讀性,需要解碼後才能閱讀。
Base64由於以上優點被廣泛應用於計算機的各個領域,然而由於輸出內容中包括兩個以上「符號類」字元(+, /, =),不同的應用場景又分別研製了Base64的各種「變種」。為統一和規范化Base64的輸出,Base62x被視為無符號化的改進版本。

❽ java怎麼樣實現base64位元組數組進行解密加密

主要就是encode和decode;
我們有學習小組也 希望一起學習進步 Java框架平台研發 378 437 335

❾ Java里,,什麼是二進制 什麼是base64他們有什麼區別

二進制就是逢二進一,而我們習慣的是十進制,就是逢十進一,其實就是平時計數的時候用的符號不一樣,十進制是(0~9)10個符號,而二進制只有0和1兩個,因為當超過1的時候就會產生進位,比如二進制加法1+1=10(注意不要和十進制的十混淆,這個是二進制一零,等於十進制的二)。
至於base64就是一套加密演算法唄,有點類似於數學的某個公式,你把你的數字輸入到這個公式就會產生另外一個數字,加密就是把你的信息按照一定的方法轉換成別的信息,如果不知道解密方法,是無法理解信息的內容的,大概就是這樣的意思。還不理解請追問

❿ Java中用Base64編程的文件批量加密解密工具程序代碼

/** * BASE64解密 * * @param key * @return * @throws Exception */
public static byte[] decryptBASE64(String key) throws Exception { return (new BASE64Decoder()).decodeBuffer(key); } /** * BASE64加密 * * @param key * @return * @throws Exception */ public static String encryptBASE64(byte[] key) throws Exception { return (new BASE64Encoder()).encodeBuffer(key); }

熱點內容
sql多表連接查詢 發布:2025-01-15 22:33:12 瀏覽:219
android網路休眠 發布:2025-01-15 22:32:12 瀏覽:348
怎麼不下魯大師查看電腦配置 發布:2025-01-15 22:30:23 瀏覽:309
php頁面亂碼 發布:2025-01-15 22:28:49 瀏覽:845
夢幻寶貝腳本 發布:2025-01-15 22:27:36 瀏覽:256
安卓怎麼調成2g網 發布:2025-01-15 22:21:40 瀏覽:284
android小車 發布:2025-01-15 22:21:15 瀏覽:923
微信怎麼沒有設置密碼 發布:2025-01-15 22:19:00 瀏覽:686
php判斷閏年 發布:2025-01-15 22:17:16 瀏覽:793
加密文件編號 發布:2025-01-15 21:56:56 瀏覽:437