當前位置:首頁 » 編程語言 » javadecode

javadecode

發布時間: 2022-08-02 21:22:14

java [decode]ugfzc3dvcmqxmjm=

java URLEncoder.decode,用於url轉碼,特別是中文轉碼

oracle 中也有 decode 函數,是加密解密用的

Ⅱ java編程

public static void main(String[] args) {
System.out.println(encode("24ab_2t2"));
System.out.println(decode("444_aaaaa_a_b_\\UL_ttt_t_2"));
}

static String encode(String src) {
if (src == null || src.length() == 0)
return src;
StringBuilder sb = new StringBuilder();
//提前處理下劃線,直接替換
src = src.replaceAll("_", "\\\\UL");
for (int i = 0; i < src.length(); i++) {
char c = src.charAt(i);
if (c == '0') { // 如果是0,直接寫入
sb.append(c);
} else if (c > 48 && c < 58) {// 如果是1-9,且無後續字元
if (i == src.length() - 1) {
sb.append(c);
break;
} else {
int num = c - 48;
while(num-->=0) {
sb.append(src.charAt(i+1));
}
sb.append("_");
}
} else {
sb.append(c);
sb.append("_");
}
}
//最後需要將下劃線替換符號中間的下劃線移除
return sb.toString().replaceAll("\\\\_U_L", "\\\\UL");
}

static String decode(String src) {
if (src == null || src.length() == 0)
return src;
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(src, "_");
while (st.hasMoreElements()) {
String s1 = st.nextToken();

if (s1.length() > 1) {
if (s1.equals("\\UL"))
sb.append("_");
else
sb.append(s1.length() - 1);
} else {
sb.append(s1);
}
}
return sb.toString();
}

php base64_encode 如何在java中decode

java默認有base64支持類,主要看PHP base_encode使用的兩個特殊字元是否與java一致,就是 +和 =

Ⅳ java中 Integer的decode(),parseInt(),valueOf()有什麼區別

【轉】Integer.decode()和Intger.valueof()
今天沒事看看API
decode合適用來分析數字
可以分析
8進:010=>分析後為 8
10進:10=>分析後為 10
16進:#10|0X10|0x10=>分析後是 16
而valueof 只能分析純數字的String
像 010 這樣的8進制 他會解析成 =>10
//////////////////////////////////////////////////////2010.01.22補充///////////////////////////////////////////////
public static int parseInt( s,
int radix)
throws
也可以用來分析各種輸入,以radix為基數. 范圍是 大於等於2,小於等於36
可以直接返回int.
decode 返回Integer
想要獲得Integer:
String 為十進制. 採用valueof(String)合適. 非十進制,採用decode(String)
想要獲得int
String 為十進制. 採用parseInt(String )合適. 非十進制,採用parseInt(String ,int)

Ⅳ 如何用JAVA實現字元串簡單加密解密

java加密字元串可以使用des加密演算法,實例如下:
package test;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.security.*;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
/**
* 加密解密
*
* @author shy.qiu
* @since
*/
public class CryptTest {
/**
* 進行MD5加密
*
* @param info
* 要加密的信息
* @return String 加密後的字元串
*/
public String encryptToMD5(String info) {
byte[] digesta = null;
try {
// 得到一個md5的消息摘要
MessageDigest alga = MessageDigest.getInstance("MD5");
// 添加要進行計算摘要的信息
alga.update(info.getBytes());
// 得到該摘要
digesta = alga.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
// 將摘要轉為字元串
String rs = byte2hex(digesta);
return rs;
}
/**
* 進行SHA加密
*
* @param info
* 要加密的信息
* @return String 加密後的字元串
*/
public String encryptToSHA(String info) {
byte[] digesta = null;
try {
// 得到一個SHA-1的消息摘要
MessageDigest alga = MessageDigest.getInstance("SHA-1");
// 添加要進行計算摘要的信息
alga.update(info.getBytes());
// 得到該摘要
digesta = alga.digest();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
// 將摘要轉為字元串
String rs = byte2hex(digesta);
return rs;
}
// //////////////////////////////////////////////////////////////////////////
/**
* 創建密匙
*
* @param algorithm
* 加密演算法,可用 DES,DESede,Blowfish
* @return SecretKey 秘密(對稱)密鑰
*/
public SecretKey createSecretKey(String algorithm) {
// 聲明KeyGenerator對象
KeyGenerator keygen;
// 聲明 密鑰對象
SecretKey deskey = null;
try {
// 返回生成指定演算法的秘密密鑰的 KeyGenerator 對象
keygen = KeyGenerator.getInstance(algorithm);
// 生成一個密鑰
deskey = keygen.generateKey();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
// 返回密匙
return deskey;
}
/**
* 根據密匙進行DES加密
*
* @param key
* 密匙
* @param info
* 要加密的信息
* @return String 加密後的信息
*/
public String encryptToDES(SecretKey key, String info) {
// 定義 加密演算法,可用 DES,DESede,Blowfish
String Algorithm = "DES";
// 加密隨機數生成器 (RNG),(可以不寫)
SecureRandom sr = new SecureRandom();
// 定義要生成的密文
byte[] cipherByte = null;
try {
// 得到加密/解密器
Cipher c1 = Cipher.getInstance(Algorithm);
// 用指定的密鑰和模式初始化Cipher對象
// 參數:(ENCRYPT_MODE, DECRYPT_MODE, WRAP_MODE,UNWRAP_MODE)
c1.init(Cipher.ENCRYPT_MODE, key, sr);
// 對要加密的內容進行編碼處理,
cipherByte = c1.doFinal(info.getBytes());
} catch (Exception e) {
e.printStackTrace();
}
// 返回密文的十六進制形式
return byte2hex(cipherByte);
}
/**
* 根據密匙進行DES解密
*
* @param key
* 密匙
* @param sInfo
* 要解密的密文
* @return String 返回解密後信息
*/
public String decryptByDES(SecretKey key, String sInfo) {
// 定義 加密演算法,
String Algorithm = "DES";
// 加密隨機數生成器 (RNG)
SecureRandom sr = new SecureRandom();
byte[] cipherByte = null;
try {
// 得到加密/解密器
Cipher c1 = Cipher.getInstance(Algorithm);
// 用指定的密鑰和模式初始化Cipher對象
c1.init(Cipher.DECRYPT_MODE, key, sr);
// 對要解密的內容進行編碼處理
cipherByte = c1.doFinal(hex2byte(sInfo));
} catch (Exception e) {
e.printStackTrace();
}
// return byte2hex(cipherByte);
return new String(cipherByte);
}
// /////////////////////////////////////////////////////////////////////////////
/**
* 創建密匙組,並將公匙,私匙放入到指定文件中
*
* 默認放入mykeys.bat文件中
*/
public void createPairKey() {
try {
// 根據特定的演算法一個密鑰對生成器
KeyPairGenerator keygen = KeyPairGenerator.getInstance("DSA");
// 加密隨機數生成器 (RNG)
SecureRandom random = new SecureRandom();
// 重新設置此隨機對象的種子
random.setSeed(1000);
// 使用給定的隨機源(和默認的參數集合)初始化確定密鑰大小的密鑰對生成器
keygen.initialize(512, random);// keygen.initialize(512);
// 生成密鑰組
KeyPair keys = keygen.generateKeyPair();
// 得到公匙
PublicKey pubkey = keys.getPublic();
// 得到私匙
PrivateKey prikey = keys.getPrivate();
// 將公匙私匙寫入到文件當中
doObjToFile("mykeys.bat", new Object[] { prikey, pubkey });
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
/**
* 利用私匙對信息進行簽名 把簽名後的信息放入到指定的文件中
*
* @param info
* 要簽名的信息
* @param signfile
* 存入的文件
*/
public void signToInfo(String info, String signfile) {
// 從文件當中讀取私匙
PrivateKey myprikey = (PrivateKey) getObjFromFile("mykeys.bat", 1);
// 從文件中讀取公匙
PublicKey mypubkey = (PublicKey) getObjFromFile("mykeys.bat", 2);
try {
// Signature 對象可用來生成和驗證數字簽名
Signature signet = Signature.getInstance("DSA");
// 初始化簽署簽名的私鑰
signet.initSign(myprikey);
// 更新要由位元組簽名或驗證的數據
signet.update(info.getBytes());
// 簽署或驗證所有更新位元組的簽名,返回簽名
byte[] signed = signet.sign();
// 將數字簽名,公匙,信息放入文件中
doObjToFile(signfile, new Object[] { signed, mypubkey, info });
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 讀取數字簽名文件 根據公匙,簽名,信息驗證信息的合法性
*
* @return true 驗證成功 false 驗證失敗
*/
public boolean validateSign(String signfile) {
// 讀取公匙
PublicKey mypubkey = (PublicKey) getObjFromFile(signfile, 2);
// 讀取簽名
byte[] signed = (byte[]) getObjFromFile(signfile, 1);
// 讀取信息
String info = (String) getObjFromFile(signfile, 3);
try {
// 初始一個Signature對象,並用公鑰和簽名進行驗證
Signature signetcheck = Signature.getInstance("DSA");
// 初始化驗證簽名的公鑰
signetcheck.initVerify(mypubkey);
// 使用指定的 byte 數組更新要簽名或驗證的數據
signetcheck.update(info.getBytes());
System.out.println(info);
// 驗證傳入的簽名
return signetcheck.verify(signed);
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
/**
* 將二進制轉化為16進制字元串
*
* @param b
* 二進制位元組數組
* @return String
*/
public String byte2hex(byte[] b) {
String hs = "";
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (java.lang.Integer.toHexString(b[n] & 0XFF));
if (stmp.length() == 1) {
hs = hs + "0" + stmp;
} else {
hs = hs + stmp;
}
}
return hs.toUpperCase();
}
/**
* 十六進制字元串轉化為2進制
*
* @param hex
* @return
*/
public byte[] hex2byte(String hex) {
byte[] ret = new byte[8];
byte[] tmp = hex.getBytes();
for (int i = 0; i < 8; i++) {
ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);
}
return ret;
}
/**
* 將兩個ASCII字元合成一個位元組; 如:"EF"--> 0xEF
*
* @param src0
* byte
* @param src1
* byte
* @return byte
*/
public static byte uniteBytes(byte src0, byte src1) {
byte _b0 = Byte.decode("0x" + new String(new byte[] { src0 }))
.byteValue();
_b0 = (byte) (_b0 << 4);
byte _b1 = Byte.decode("0x" + new String(new byte[] { src1 }))
.byteValue();
byte ret = (byte) (_b0 ^ _b1);
return ret;
}
/**
* 將指定的對象寫入指定的文件
*
* @param file
* 指定寫入的文件
* @param objs
* 要寫入的對象
*/
public void doObjToFile(String file, Object[] objs) {
ObjectOutputStream oos = null;
try {
FileOutputStream fos = new FileOutputStream(file);
oos = new ObjectOutputStream(fos);
for (int i = 0; i < objs.length; i++) {
oos.writeObject(objs[i]);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* 返回在文件中指定位置的對象
*
* @param file
* 指定的文件
* @param i
* 從1開始
* @return
*/
public Object getObjFromFile(String file, int i) {
ObjectInputStream ois = null;
Object obj = null;
try {
FileInputStream fis = new FileInputStream(file);
ois = new ObjectInputStream(fis);
for (int j = 0; j < i; j++) {
obj = ois.readObject();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
ois.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return obj;
}
/**
* 測試
*
* @param args
*/
public static void main(String[] args) {
CryptTest jiami = new CryptTest();
// 執行MD5加密"Hello world!"
System.out.println("Hello經過MD5:" + jiami.encryptToMD5("Hello"));
// 生成一個DES演算法的密匙
SecretKey key = jiami.createSecretKey("DES");
// 用密匙加密信息"Hello world!"
String str1 = jiami.encryptToDES(key, "Hello");
System.out.println("使用des加密信息Hello為:" + str1);
// 使用這個密匙解密
String str2 = jiami.decryptByDES(key, str1);
System.out.println("解密後為:" + str2);
// 創建公匙和私匙
jiami.createPairKey();
// 對Hello world!使用私匙進行簽名
jiami.signToInfo("Hello", "mysign.bat");
// 利用公匙對簽名進行驗證。
if (jiami.validateSign("mysign.bat")) {
System.out.println("Success!");
} else {
System.out.println("Fail!");
}
}
}

Ⅵ java中編碼與解碼分別指什麼

java中編碼:URLEncoder.encode(strUri,"utf-8");

java中解碼碼:URLDecoder.decode(strUri,"utf-8");

Ⅶ java中有沒有類似decodeURI()的方法

Javascript 中的 decodeURI/decodeURIComponent,Java中的java.net.URLDecoder類的decode方法提供了相近的功能,但又有一些微妙的不同:

varURLDecoder=Java.type("java.net.URLDecoder");
varURLEncoder=Java.type("java.net.URLEncoder");

varurl="
中文";
vars1=encodeURI(url);
vars2=encodeURIComponent(url);
vars3=URLEncoder.encode(url,"UTF-8");

print(s1);
print(s2);
print(s3);
print("-------------")
print(decodeURI(s1));
print(decodeURI(s2));
print(decodeURI(s3));
print("-------------")
print(decodeURIComponent(s1));
print(decodeURIComponent(s2));
print(decodeURIComponent(s3));
print("-------------")
print(URLDecoder.decode(s1,"UTF-8"));
print(URLDecoder.decode(s2,"UTF-8"));
print(URLDecoder.decode(s3,"UTF-8"));
使用JDK8的jjs.exe運行上面這段代碼,結果如下:
D:Temp>j:sharejdk8injjs.exeurl.js


http%3A%2F%2Fwww.example.com%2Fstring%20with%20%2B%20and%20%3F%20and%20%26%20and%20%E4%B8%AD%E6%96%87
http%3A%2F%2Fwww.example.com%2Fstring+with+%2B+and+%3F+and+%26+and+%E4%B8%AD%E6%96%87
-------------

中文
http%3A%2F%2Fwww.example.com%2Fstringwith%2Band%3Fand%26and中文
http%3A%2F%2Fwww.example.com%2Fstring+with+%2B+and+%3F+and+%26+and+中文
-------------

中文

中文

中文
-------------

中文

中文

中文
熱點內容
怎麼看筆記本配置好壞怎麼對比 發布:2025-01-23 08:50:00 瀏覽:514
安卓q用起來怎麼樣 發布:2025-01-23 08:49:14 瀏覽:294
foreach資料庫 發布:2025-01-23 08:49:05 瀏覽:741
什麼是車棚配置 發布:2025-01-23 08:42:58 瀏覽:312
智能電視盒子無線網密碼在哪裡 發布:2025-01-23 08:42:14 瀏覽:277
代理提取源碼 發布:2025-01-23 08:41:35 瀏覽:62
nas網路伺服器為什麼貴 發布:2025-01-23 08:00:00 瀏覽:941
語音伺服器未連接如何連接視頻 發布:2025-01-23 07:59:11 瀏覽:883
日流量10萬需要什麼類型伺服器 發布:2025-01-23 07:58:27 瀏覽:501
伺服器獲取地址失敗 發布:2025-01-23 07:55:18 瀏覽:850