📄 util.java
字号:
package abchr.crypto;
public class Util {
public static char[] bytesToChars(byte[] a,boolean bigEndian) {
char[] result=new char[a.length/2];
if(bigEndian) {
for(int i=0;i<result.length;i++) {
result[i]=(char)((a[i*2]<<8 & 0xFF00)+(a[i*2+1] & 0x00FF));
}
} else {
for(int i=0;i<result.length;i++) {
result[i]=(char)((char)((a[i*2+1]<<8 & 0xFF00)+(a[i*2] & 0x00FF))+32768);
}
}
return result;
}
public static char[] bytesToChars(byte[] a,int offset,int length,boolean bigEndian) {
char[] result=new char[length/2];
if(bigEndian) {
for(int i=0;i<result.length;i++) {
result[i]=(char)((a[offset+i*2]<<8 & 0xFF00)+(a[offset+i*2+1] & 0x00FF));
}
} else {
for(int i=0;i<result.length;i++) {
result[i]=(char)((char)((a[offset+i*2+1]<<8 & 0xFF00)+(a[offset+i*2] & 0x00FF))+32768);
}
}
return result;
}
public static byte[] charsToBytes(char[] a) {
byte[] result=new byte[a.length*2];
for(int i=0;i<a.length;i++) {
result[2*i]=(byte)(a[i]>>8 & 0x00FF);
result[2*i+1]=(byte)(a[i] & 0x00FF);
}
return result;
}
public static void intToByteArray(int i,byte[] b,int offset) {
b[offset]=(byte)(i>>24);
b[offset+1]=(byte)((i>>16)&0x000000FF);
b[offset+2]=(byte)((i>>8)&0x000000FF);
b[offset+3]=(byte)(i&0x000000FF);
}
public static int byteArrayToInt(byte[] b,int offset) {
return ((b[offset]<<24) & 0xFF000000)+((b[offset+1]<<16) & 0x00FF0000)+((b[offset+2]<<8) & 0x0000FF00)+(b[offset+3] & 0x000000FF);
}
public static int[] bytesToInts(byte[] a) {
int[] result=new int[a.length/4];
for(int i=0;i<result.length;i++) {
result[i]=((a[i*4]<<24) & 0xFF000000)+((a[i*4+1]<<16) & 0x00FF0000)+((a[i*4+2]<<8) & 0x0000FF00)+(a[i*4+3] & 0x000000FF);
}
return result;
}
public static byte[] stringToByteArray(String s) {
byte[] a=new byte[s.length()*2];
for(int i=0;i<s.length();i++) {
a[2*i]=(byte)(s.charAt(i)>>8 & 0x000000FF);
a[2*i+1]=(byte)(s.charAt(i) & 0x000000FF);
}
return a;
}
public static String byteArrayToString(byte[] a) {
StringBuffer out=new StringBuffer(a.length*2+1);
for(int i=0;i<a.length/2;i++) {
out.append((char)((a[2*i]<<8 & 0xFF00)+(a[2*i+1] & 0x00FF)));
}
return out.toString();
}
public static byte[] intsToBytes(int[] a) {
byte[] result=new byte[a.length*4];
for(int i=0;i<a.length;i++) {
result[4*i]=(byte)(a[i]>>24);
result[4*i+1]=(byte)((a[i]>>16)&0x000000FF);
result[4*i+2]=(byte)((a[i]>>8)&0x000000FF);
result[4*i+3]=(byte)(a[i]&0x000000FF);
}
return result;
}
public static byte[] pad(byte[] data,int m) {
byte[] result=new byte[8+data.length+((m-data.length%m)%m)];
intToByteArray(data.length,result,0);
System.arraycopy(data,0,result,8,data.length);
return result;
}
public static byte[] unpad(byte[] bytes) throws IllegalArgumentException {
int length=byteArrayToInt(bytes,0);
if(length>1024*1024){throw new IllegalArgumentException("Invalid length");}
/*System.out.println("length="+length);
length=bytes.length-8;*/
byte[] result=new byte[length];
System.arraycopy(bytes,8,result,0,length);
return result;
}
private Util(){}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -