如果你说的是文本加密,有很多方法,自己也可以写个字符变换程序
如果是代码加密,没用的,java就是开源。
你藏再厉害,编译+反编译,干净的源码就出来了
㈡ java String gbk编码和c# String gbk 编码难道不一样
您好,提问者:
确实是不一样的,这个时候给你一种也可用于.net对接的加密:
/**
*加密方法
*@paramstr
*@return
*/
publicstaticStringencode(Stringstr){
//根据默认编乎卖码获取字节数组
byte[]bytes=str.getBytes();
StringBuildersb=newStringBuilder(bytes.length*2);
//将字节数组中每个字节拆解成2位16进制整数
for(inti=0;i<bytes.length;i++){
sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
}
returnsb.toString();
}
/**
*得到16进制的GBK编码,转换为汉字
*@paramhexStr
*@return
*/
publicstaticStringdecode(StringhexStr){
if(null==hexStr||"".equals(hexStr)||(hexStr.length())%2!=0){
returnnull;
}
intbyteLength=hexStr.length()/2;
byte[]bytes=newbyte[byteLength];
inttemp=0;
for(inti=0;i<byteLength;i++){
temp=hex2Dec(hexStr.charAt(2*i))*16+hex2Dec(hexStr.charAt(2*i+1));
bytes[i]=(byte)(temp<128?temp:temp-256);
}
returnnewString(bytes);
}
privatestaticStringhexString="0123456789ABCDEF";
privatestaticinthex2Dec(charch){
if(ch=='0')
return0;
if(ch=='1')
return1;
if(ch=='2')
return2;
if(ch=='3')
return3;
if(ch=='4')
return4;
if(ch=='5')
return5;
if(ch=='6')
return6;
if(ch=='7')
return7;
if(ch=='8')
return8;
if(ch=='9')
return9;
if(ch=='a')
return10;
if(ch=='A')
return10;
if(ch=='B')
return11;
if(ch=='b')
return11;
if(ch=='C'滚纳)
return12;
if(ch=='c')
return12;
if(ch=='D')
return13;
if(ch=='d')
return13;
if(ch=='E'岁备逗)
return14;
if(ch=='e')
return14;
if(ch=='F')
return15;
if(ch=='f')
return15;
elsereturn-1;
}
㈢ 设计一种很难被破解的异或加密方法
不会哦。比如我有一个大小为1000字节的文本文件,我先产生了4个随机数,100,4,200,5
然后先取文件100字节处的数据然后与下一个字节也就是101位置的数据异或,然后取加密后的数据继续与下个字节XOR,到文件尾后转到文件头继续,直到完全把整个文件异或加密4遍,也就是4000次XOR,同样再取文件200字节偏移处数据进行5000次XOR,解密者只需知道4个随机数然后按步骤反过来XOR就还原为原文本文件,我想知道不知道4个随机数的情况下怎样破解,穷举吗,难度大不大,有什么更好的异或加密方案,如用一张jpg照
㈣ java md5加密 index页面代码
/**
*将指定byte数组转换成16进制字符串
*@paramb
*@return
*/
(byte[]b){
StringBufferhexString=newStringBuffer();
for(inti=0;i<b.length;i++){
Stringhex=Integer.toHexString(b[i]&0xFF);
if(hex.length()==1){
hex='0'+hex;
}
hexString.append(hex.toUpperCase());
}
returnhexString.toString();
}
/**
*获得加密后的16进制形式口令
*@parampassword
*@return
*@
*@
*/
(Stringpassword)
,UnsupportedEncodingException{
//声明加密后的口令数组变量
byte[]pwd=null;
//随机数生成器
SecureRandomrandom=newSecureRandom();
//声明盐数组变量
byte[]salt=newbyte[SALT_LENGTH];
//将随机数放入盐变量中
random.nextBytes(salt);
//声明消息摘要对象
MessageDigestmd=null;
//创建消息摘要
md=MessageDigest.getInstance("MD5");
//将盐数据传入消息摘要对象
md.update(salt);
//将口令的数据传给消息摘要对象
md.update(password.getBytes("UTF-8"));
//获得消息摘要的字节数组
byte[]digest=md.digest();
//因为要在口令的字节数组中存放盐,所以加上盐的字节长度
pwd=newbyte[digest.length+SALT_LENGTH];
//将盐的字节拷贝到生成的加密口令字节数组的前12个字节,以便在验证口令时取出盐
System.array(salt,0,pwd,0,SALT_LENGTH);
//将消息摘要拷贝到加密口令字节数组从第13个字节开始的字节
System.array(digest,0,pwd,SALT_LENGTH,digest.length);
//将字节数组格式加密后的口令转化为16进制字符串格式的口令
returnbyteToHexString(pwd);
}
publicstaticvoidmain(String[]args){//测试方法
try{
System.out.println(getEncryptedPwd("123456"));
}catch(NoSuchAlgorithmExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(UnsupportedEncodingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
在jsp页面中可以调用getEncryptedPwd方法
㈤ DES加密算法CBC模式怎么解密最好有程序 谢谢~(*^__^*)
原型:
int WINAPI icePub_desEncryptionHex(char *strInputHexstring, char *strOutputHexstring, char *strKeyHexstring)
输入:strInputHexstring 待加密16进制数据串,16字节长度
strKeyHexstring 单des密钥16进制串,16字节长度
输出:strOutputHexstring 加密后16进制数据串,16字节长度
原型:
int WINAPI icePub_desDecryptionHex(char *strInputHexstring, char *strOutputHexstring, char *strKeyHexstring)
输入:strInputHexstring 待解密16进制数据串,16字节长度
strKeyHexstring 单des密钥16进制串,16字节长度
输出:strOutputHexstring 解密后16进制数据串,16字节长度