问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

java中我有下面的一个加密方法,谁能给我提供一个解密方法呢?

发布网友 发布时间:2022-04-27 11:59

我来回答

3个回答

热心网友 时间:2023-09-16 23:06

你只贴出来了加密用到的函数名,但函数体都没有,不知道你的代码是怎么加密的,怎么可能解密的了。。。如果你用的是eclipse。ctrl+左键点击进函数里,函数看实现。追问我这个是个方法,不需要类名了。你传一个string进去,就会返回一个string出来的。你随便把这个函数放在哪个类里都行

热心网友 时间:2023-09-16 23:07

BASE64Encoder和Decoder是非官方JDK里面的类。虽然可以在JDK里能找到并使用,但是在API里查不到。这两个可能是SUN公司内部人使用的,据我所知SUN开头的包里面的类都找不到相关文档,所以里面可能都是非官方的类。

热心网友 时间:2023-09-16 23:07

package util;

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
* @author Administrator
*
*/
public class Base64Test {
/**
* 生成密钥
*
* @param s
* 用于生成密钥的字符串,必须不少于8位
* @return 密钥
* @throws Exception
*/
private static SecretKey genKey(String s) throws Exception {
SecretKeyFactory kf = SecretKeyFactory.getInstance("DES");
DESKeySpec ks = new DESKeySpec(s.substring(0, 8).getBytes());
SecretKey kd = kf.generateSecret(ks);
return kd;
}

/**
* 加密
*
* @param key
* 用于生成密钥的字符串,必须不少于8位
* @param src
* 要加密的字符串
* @return 加密后的字符串
*/
public static String getEncryptedString(String key, String src) {
String base64 = "";
try {
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, genKey(key));
byte[] inputBytes = src.getBytes("UTF8");
byte[] outputBytes = cipher.doFinal(inputBytes);
BASE64Encoder encoder = new BASE64Encoder();
base64 = encoder.encode(outputBytes);
} catch (Exception e) {
base64 = e.getMessage();
}
return base64;
}
public static String entryPsw(String instr) {
byte[] cipherText = null;
sun.misc.BASE64Decoder base64d = new sun.misc.BASE64Decoder();
sun.misc.BASE64Encoder base64e = new sun.misc.BASE64Encoder();
String materialKey = "@Zer5QHeCe5r2zrDyk398$*0kjyWcuYt";
try {
byte[] mykey = base64d.decodeBuffer(materialKey);
if (mykey == null || mykey.length != 24) {
instr = null;
System.out.println("错误的验证密匙!");
} else {
byte[] plainText = instr.getBytes();
javax.crypto.spec.SecretKeySpec secrekeysp = new javax.crypto.spec.SecretKeySpec(mykey, "DESede");
java.security.Key key = (java.security.Key) secrekeysp;

javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("DESede/ECB/PKCS5Padding", "SunJCE");

cipher.init(javax.crypto.Cipher.ENCRYPT_MODE, key);
cipherText = cipher.doFinal(plainText);
}
} catch (Exception Ex) {
Ex.printStackTrace();
}
return base64e.encode(cipherText);
}
/**
* 解密
*
* @param key
* 用于生成密钥的字符串,必须不少于8位
* @param crypt
* 要解密的字符串
* @return 解密后的原文
*/
public static String getDecryptedString(String key, String crypt) {
String result = null;
try {
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, genKey(key));
BASE64Decoder decoder = new BASE64Decoder();
byte[] raw = decoder.decodeBuffer(crypt);
byte[] stringBytes = cipher.doFinal(raw);
result = new String(stringBytes, "UTF8");
} catch (Exception e) {
result = e.getMessage();
}
return result;
}

// 加解密实例
public static void main(String[] args) {
String key = "@Zer5QHeCe5r2zrDyk398$*0kjyWcuYt";
String src = "1234567";
System.out.println("src==" + src);
String encrypt = Base64Test.getEncryptedString(key, src);
System.out.println("encrypt==" + encrypt);
String testEncrypt = Base64Test.entryPsw(src);
System.out.println("encrypt==" + encrypt);
String decrypt = Base64Test.getDecryptedString(key, encrypt);
System.out.println("decrypt==" + decrypt);
}
}
打印结果:
src==1234567
encrypt==RfjlbP5kCv4=
encrypt==RfjlbP5kCv4=
decrypt==1234567
上述中有一个加解密的方法,来自百度,由于百度不能贴原址路径,在原址的方案上加上了你的方法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么我腌制的辣椒有一股臭味 枸杞干燥的方法介绍 枸杞怎样干燥 ...这么严了吗?体检左边精索静脉曲张2.4mm算轻微了,还必须要做手术... ...出,哪个不是科技类网站(单选) A、虎嗅 B、猫扑 C、i黑马? 宁波到宁海的车汽车南站最早几点? 一群河马有多少只? 一群是指多少个人以上 有什么办法屏蔽不良网站? 北京二手房网签之后还要多久过户 北京二手房网签后多久能过户? 北京二手房如何过户 求小栗旬《信长协奏曲》日剧云盘资源。 java.lang.NoClassDefFoundError: javax/crypto/spec/SecretKeySpec 跪求信长协奏曲2016年免费高清百度云资源,小栗旬主演的 在java中,加密和解密时密钥类型用Key和SecretKeySpec有什么区别? 信长协奏曲中斋藤道三撕去那页是什么 我要学习养兔子的技术,到哪里学习? 限定词是谁 还有什么限定词吗 什么是限定词 大自然的语言限制性词语有哪些 初中语文限制性词语有哪些 限定词有哪些 他是怎样用的 如何分析限制语? 什么是限制性词语 限定词包括哪些?简单囊括一下吧 英语的限定词都有那些 模糊限制语的变动型模糊限制语 说明文表示程度、表示估计、表示限制、时间、范围词语 英语中有哪6种限定词 什么是 限制性词语 ? 求信长协奏曲电影版高清,百度云或者种子 看java代码,帮我找出DES密钥,我看不懂代码 求《信长协奏曲信长协奏曲》百度云无删减完整版在线观看,松山博昭导演的 一段简单的java语言逐句分析 求日剧信长协奏曲,电视剧版百度云链接,谢谢! 如何用PHP代码实现这个Java代码所实现的 信长协奏曲电视剧最后一集,小栗旬最后那个眼神太帅了。 [高分]求关于java的3des加密的bug解决办法,要求能用16位key并且不让加密后长度多8个字节; 信长协奏曲的介绍 信长协奏曲 饰演妹妹 求日剧信长协奏曲百度云资源,带字幕 java des加密后的串比原字符串长 求小栗旬演的《信长协奏曲》百度云盘资源 求日剧信长协奏曲的百度云!不要压缩包也不要付费的!! 如何把下面java的DES加密的写法写成C#的,用C#来实现?求高手指教! 信长协奏曲一共有几集 java中DESKeySpec .net用什么代替 Java代码改写 信长协奏曲第二季 3des java (3key模式)