背景:在JAVA 与 C 通信时,需要对传送的数据进行加密,在采用 RC4 加密时, key 要随机生成,每次都使用不同的 sessionkey
实现方式:
/**
* 获取随机字母
*/
private char getRandomCharacter() {
// TODO Auto-generated method stub
switch (( int )(Math. random ()*2)) {
case 0:
return ( char )(Math. random ()*26+ 'A' );
case 1:
return ( char )(Math. random ()*26+ 'a' );
}
return 0;
}
/**
* 获取16位的随机sessionKey 即rc4的key
*
* @return sessionKey
*/
private byte [] getSessionKey(){
byte [] sessionKey = new byte [16];
StringBuffer sBuffer= new StringBuffer( "" );
for ( int i = 0; i < 16; i++) {
char randomCharacter = getRandomCharacter();
sBuffer.append(randomCharacter);
}
System. arraycopy (sBuffer.toString().getBytes(), 0, sessionKey, 0, sBuffer.toString().getBytes(). length );
return sessionKey;
}
注意: System. arraycopy (源,源位置,目标,目标位置,源长度 )