XOR
1264 ワード
public class XORUtil {
private static XORUtil _instance;
private XORUtil(){
}
public static XORUtil getInstance(){
if(null == _instance)
_instance = new XORUtil();
return _instance;
}
/**
* XOR Operation Process
* @param _str
* @return
*/
private byte XoRProcess (String _str) {
byte _resultByte = 0;
int j = 0;
byte [] _strByte = _str.getBytes();
for (int i = 0; i < _strByte.length; i++) {
j = i + 1;
if(j == _str.length())
break;
if(i == 0){
_resultByte = (byte)(_strByte[i] ^ _strByte[j]);
}else{
_resultByte = (byte)(_resultByte ^ _str.charAt(j));
}
}
return _resultByte;
}
/**
* Byte 2 Binary
* @param _sourceStr
* @return
*/
public String encryptXOR(String _sourceStr){
_sourceStr = Integer.toBinaryString(XoRProcess(_sourceStr));
if(_sourceStr.length() < 8){
while(_sourceStr.length() < 8){
_sourceStr = "0"+_sourceStr;
}
}
return _sourceStr;
}
}