使用下面的语句即可:
DigestUtilsshaHex(要加密的字符);加密参数最好用字节数组,毕竟SHA1算法是使用字节为单位进行运算的,字符串转字节还与字符编码有关。
import javautilScanner;
public class Cipher
{
public static void main(String [] args)
{
Scanner kb=new Scanner(Systemin);
Systemoutprintln("Please enter a String: ");
String str=kbnextLine();
Systemoutprintln("Please enter the offset value: ");
int offset=kbnextInt();
Cipher c = new Cipher(); //new个类Cipher的实例
Systemoutprintln(cencrypt(str, offset)); //执行encrypt()方法,并输出
}
public String encrypt(String str,int offset)
{
String result = str; //这里你要再定义一个返回结果的字符串Stringreplace()方法只是返回改过后的字符串,并不修改原字符串。
for(int i=0;i<strlength();i++)
{
int a=(int)strcharAt(i)+offset;
if(a>126)
{
result = strreplace(strcharAt(i),(char)(a-95));
}
else
result = strreplace(strcharAt(i),(char)(a));
}
//return str; //永远都是返回原来的字符串
return result;
}
}
至于你说的!和?的问题,你应该是直接输出a了,看到的是?,因为a是128,超过了127,所以输出的是?,超过127的都是?,不信你可以试试129等等。但替换字符的时候你用的是a-95,是正确的,用!替换}。
基本思路简单,
首先用流把文件内容读出来,
然后把内容转成acsii码,
之后移位,可以全文用一种移位,也可以每行或者每个字用一种移位
最后用流写回去即可
比如 "我" 这个字的ascii码是\u6211,加1移位成\u6212(戒),这样一片文章就面目全非了当然移位成什么看你自己的移位算法,然后再转成汉字写回去
package test;
import javaioIOException;
public class Native2ascii {
private static final String java_path = "G:\\Java\\jdk 16";//你的jdk的绝对路径
private static final String target_file = "C:\\atxt"; //原始文本的完整路径
private static final String result_file = "C:\\btxt";//转码后的路径
private static final String back_file = "C:\\ctxt";//转回的路径
private static final String encoding = "GBK";// 编码
public static void native2ascii()
{
try {
RuntimegetRuntime()exec(java_path+"\\bin\\native2asciiexe -encoding "+encoding+" "+target_file+" "+result_file);
//读取btxt中的内容进行移位,我的没有移位所以写回ctxt中还能够看懂
RuntimegetRuntime()exec(java_path+"\\bin\\native2asciiexe -reverse "+result_file+" "+back_file);
} catch (IOException e) {
eprintStackTrace();
}
}
public static void main(String arg[]){
native2ascii();
}
}
朋友你好,很高兴为你作答。
首先,Java加密能够应对的风险包括以下几个:
1、核心技术窃取
2、核心业务破解
3、通信模块破解
4、API接口暴露
本人正在使用几维安全Java加密方式,很不错,向你推荐,希望能够帮助到你。
几维安全Java2C针对DEX文件进行加密保护,将DEX文件中标记的Java代码翻译为C代码,编译成加固后的SO文件。默认情况只加密activity中的onCreate函数,如果开发者想加密其它类和方法,只需对相关类或函数添加标记代码,在APK加密时会自动对标记的代码进行加密处理。
与传统的APP加固方案相比,不涉及到自定义修改DEX文件的加载方式,所以其兼容性非常好;其次Java函数被完全转化为C函数,直接在Native层执行,不存在Java层解密执行的步骤,其性能和执行效率更优。
如果 *** 作上有不明白的地方,可以联系技术支持人员帮你完成Java加密。
希望以上解答能够帮助到你。
参考资料,点这里----java加密方式:网页链接
import javasecurity;
import javaxcrypto;
/
本例解释如何利用DES私钥加密算法加解密
@author Devon
@version 10 04/03/10
/
public class SingleKeyExample {
public static void main(String[] args) {
try {
String algorithm = "DES"; //定义加密算法,可用 DES,DESede,Blowfish
String message = "Hello World 这是待加密的信息";
// 生成个DES密钥
KeyGenerator keyGenerator = KeyGeneratorgetInstance(algorithm);
keyGeneratorinit(56); //选择DES算法,密钥长度必须为56位
Key key = keyGeneratorgenerateKey(); //生成密钥
// 生成Cipher对象
Cipher cipher = CiphergetInstance("DES");
//用密钥加密明文(message),生成密文(cipherText)
cipherinit(CipherENCRYPT_MODE, key); // *** 作模式为加密(CipherENCRYPT_MODE),key为密钥
byte[] cipherText = cipherdoFinal(messagegetBytes()); //得到加密后的字节数组
Systemoutprintln("加密后的信息: " + new String(cipherText));
//用密钥加密明文(plainText),生成密文(cipherByte)
cipherinit(CipherDECRYPT_MODE, key); // *** 作模式为解密,key为密钥
byte[] sourceText = cipherdoFinal(cipherText); //获得解密后字节数组
Systemoutprintln("解密后的信息: " + new String(sourceText));
} catch (Exception ex) {
exprintStackTrace();
}
}
}
/
@author Devon
/
import javasecurity;
import javasecurityspec;
import javaxcrypto;
public class PairKeyExample {
public static void main(String argv[]) {
try {
String algorithm = "RSA"; //定义加密算法,可用 DES,DESede,Blowfish
String message = "张三,你好,我是李四";
//产生张三的密钥对(keyPairZhang)
KeyPairGenerator keyGeneratorZhang =
KeyPairGeneratorgetInstance(algorithm); //指定采用的算法
keyGeneratorZhanginitialize(1024); //指定密钥长度为1024位
KeyPair keyPairZhang = keyGeneratorZhanggenerateKeyPair(); //产生密钥对
Systemoutprintln("生成张三的公钥对");
// 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节
byte[] publicKeyZhangEncode = keyPairZhanggetPublic()getEncoded();
//通过网络或磁盘等方式,把公钥编码传送给李四
//李四接收到张三编码后的公钥,将其解码
KeyFactory keyFacoryLi = KeyFactorygetInstance(algorithm); //得到KeyFactory对象
X509EncodedKeySpec x509KeySpec =
new X509EncodedKeySpec(publicKeyZhangEncode); //公钥采用X509编码
PublicKey publicKeyZhang = keyFacoryLigeneratePublic(x509KeySpec); //将公钥的KeySpec对象转换为公钥
Systemoutprintln("李四成功解码,得到张三的公钥");
//李四用张三的公钥加密信息,并发送给李四
Cipher cipher = CiphergetInstance("RSA/ECB/PKCS1Padding"); //得到Cipher对象
cipherinit(CipherENCRYPT_MODE, publicKeyZhang); //用张三的公钥初始化Cipher对象
byte[] cipherMessage = cipherdoFinal(messagegetBytes()); //得到加密信息
Systemoutprintln("加密后信息:" + new String(cipherMessage));
Systemoutprintln("加密完成,发送给李四");
//张三用自己的私钥解密从李四处收到的信息
cipherinit(CipherDECRYPT_MODE, keyPairZhanggetPrivate()); //张三用其私钥初始化Cipher对象
byte[] originalMessage = cipherdoFinal(cipherMessage); //得到解密后信息
Systemoutprintln("张三收到信息,解密后为:" + new String(originalMessage));
} catch (Exception ex) {
exprintStackTrace();
}
}
}
import javaioFile;
import javaioFileInputStream;
import javaioFileOutputStream;
public class XorExample {
public static final byte XOR_CONST = 0X12;
public static void main(String[] args) throws Exception {
File src = new File("level1txt");
File dest = new File("level2txt");
File dest2 = new File("level3txt");
xorEn(src, dest);
xorEn(dest, dest2);
}
/
异或的一个特点: a^b = c c^b = a
所以简单点,这里的加解密都用一个函数就行了
@param src
@param dest
@throws Exception
/
public static void xorEn(File src, File dest) throws Exception {
// 文件不存在或为文件夹就不判断了
FileInputStream fis = new FileInputStream(src);
FileOutputStream fos = new FileOutputStream(dest);
byte[] bs = new byte[1024];
int len = 0;
while ((len = fisread(bs)) != -1) {
for (int i = 0; i < len; i++) {
bs[i] ^= XOR_CONST;
}
foswrite(bs, 0, len);
}
fosclose();
fisclose();
}
}
以上就是关于用java程序进行sha1加密,怎么弄全部的内容,包括:用java程序进行sha1加密,怎么弄、java实现字母移位加密的程序!!急!!求解!、怎样用java程序加密解密文本文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)