z转载 Base64.encode 和decode 之android记录 java加密解密使用
z转载 Base64.encode 和decode 之android记录
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
public class pssutil
{
private static String encryptKey = "12345678";
private static byte[] iv;
private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray();
static
{
byte[] arrayOfByte = new byte[8];
arrayOfByte[0] = 1;
arrayOfByte[1] = 2;
arrayOfByte[2] = 3;
arrayOfByte[3] = 4;
arrayOfByte[4] = 5;
arrayOfByte[5] = 6;
arrayOfByte[6] = 7;
arrayOfByte[7] = 8;
iv = arrayOfByte;
}
public static String decryptDES(String paramString)
throws Exception
{
byte[] arrayOfByte = Base64.decode(paramString);
IvParameterSpec localIvParameterSpec = new IvParameterSpec(iv);
SecretKeySpec localSecretKeySpec = new SecretKeySpec(encryptKey.getBytes(), "DES");
Cipher localCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
localCipher.init(2, localSecretKeySpec, localIvParameterSpec);
return new String(localCipher.doFinal(arrayOfByte));
}
public static String encryptDES(String paramString)
throws Exception
{
IvParameterSpec localIvParameterSpec = new IvParameterSpec(iv);
SecretKeySpec localSecretKeySpec = new SecretKeySpec(encryptKey.getBytes(), "DES");
System.out.println(localSecretKeySpec);
Cipher localCipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
System.out.println(localCipher);
localCipher.init(1, localSecretKeySpec, localIvParameterSpec);
byte[] arrayOfByte = localCipher.doFinal(paramString.getBytes());
Base64.encode(arrayOfByte);
return Base64.encode(arrayOfByte);
}
public static String parseByte2HexStr(byte[] paramArrayOfByte)
{
StringBuffer localStringBuffer = new StringBuffer();
for (int i = 0; i < paramArrayOfByte.length; i++)
{
String str = Integer.toHexString(0xFF & paramArrayOfByte[i]);
if (str.length() == 1)
str = '0' + str;
localStringBuffer.append(str.toUpperCase());
}
return localStringBuffer.toString();
}
static class Base64
{
private static int decode(char c)
{
if (c >= 'A' && c <= 'Z')
return ((int) c) - 65;
else if (c >= 'a' && c <= 'z')
return ((int) c) - 97 + 26;
else if (c >= '0' && c <= '9')
return ((int) c) - 48 + 26 + 26;
else
switch (c) {
case '+':
return 62;
case '/':
return 63;
case '=':
return 0;
default:
throw new RuntimeException("unexpected code: " + c);
}
}
private static void decode(String s, OutputStream os)
throws IOException
{
int i = 0;
int len = s.length();
while (true) {
while (i < len && s.charAt(i) <= ' ')
i++;
if (i == len)
break;
int tri = (decode(s.charAt(i)) << 18)
+ (decode(s.charAt(i + 1)) << 12)
+ (decode(s.charAt(i + 2)) << 6)
+ (decode(s.charAt(i + 3)));
os.write((tri >> 16) & 255);
if (s.charAt(i + 2) == '=')
break;
os.write((tri >> 8) & 255);
if (s.charAt(i + 3) == '=')
break;
os.write(tri & 255);
i += 4;
}
}
public static byte[] decode(String paramString)
{
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
decode(paramString, bos);
} catch (IOException e) {
throw new RuntimeException();
}
byte[] decodedBytes = bos.toByteArray();
try {
bos.close();
bos = null;
} catch (IOException ex) {
System.err.println("Error while decoding BASE64: " + ex.toString());
}
return decodedBytes;
}
public static String encode(byte[] paramArrayOfByte)
{
int i = paramArrayOfByte.length;
StringBuffer localStringBuffer = new StringBuffer(3 * paramArrayOfByte.length / 2);
int j = i - 3;
int k = 0;
int i3;
for (int m = 0; k <= j; m = i3)
{
int i2 = (0xFF & paramArrayOfByte[k]) << 16 | (0xFF & paramArrayOfByte[(k + 1)]) << 8 | 0xFF & paramArrayOfByte[(k + 2)];
localStringBuffer.append(DesUtil.legalChars[(0x3F & i2 >> 18)]);
localStringBuffer.append(DesUtil.legalChars[(0x3F & i2 >> 12)]);
localStringBuffer.append(DesUtil.legalChars[(0x3F & i2 >> 6)]);
localStringBuffer.append(DesUtil.legalChars[(i2 & 0x3F)]);
k += 3;
i3 = m + 1;
if (m >= 14)
{
i3 = 0;
localStringBuffer.append(" ");
}
}
if (k == -2 + (0 + i))
{
int i1 = (0xFF & paramArrayOfByte[k]) << 16 | (0xFF & paramArrayOfByte[(k + 1)]) << 8;
localStringBuffer.append(DesUtil.legalChars[(0x3F & i1 >> 18)]);
localStringBuffer.append(DesUtil.legalChars[(0x3F & i1 >> 12)]);
localStringBuffer.append(DesUtil.legalChars[(0x3F & i1 >> 6)]);
localStringBuffer.append("=");
}
while (true)
{
return localStringBuffer.toString();
}
}
}
}

浙公网安备 33010602011771号