java的MD5withRSA算法可以看到解密的内容么

java的MD5withRSA算法可以看到解密的内容么,第1张

您好,

<一> MD5加密算法

消息摘要算法第五版(Message Digest Algorithm),是一种单向加密算法,只能加密、无法解密。然而MD5加密算法已经被中国山东大学王小云教授成功破译,但是在安全性要求不高的场景下,MD5加密算法仍然具有应用价值。

1 创建md5对象:

<pre name="code" class="java">MessageDigest md5 = MessageDigestgetInstance("md5");

2 进行加密 *** 作:

byte[] cipherData = md5digest(plainTextgetBytes());

3 将其中的每个字节转成十六进制字符串:byte类型的数据最高位是符号位,通过和0xff进行与 *** 作,转换为int类型的正整数。

String toHexStr = IntegertoHexString(cipher & 0xff);

4 如果该正数小于16(长度为1个字符),前面拼接0占位:确保最后生成的是32位字符串。

builderappend(toHexStrlength() == 1 "0" + toHexStr : toHexStr);

5加密转换之后的字符串为:c0bb4f54f1d8b14caf6fe1069e5f93ad

6 完整的MD5算法应用如下所示:

/

功能简述: 测试MD5单向加密

@throws Exception

/

@Test

public void test01() throws Exception {

String plainText = "Hello , world !";

MessageDigest md5 = MessageDigestgetInstance("md5");

byte[] cipherData = md5digest(plainTextgetBytes());

StringBuilder builder = new StringBuilder();

for(byte cipher : cipherData) {

String toHexStr = IntegertoHexString(cipher & 0xff);

builderappend(toHexStrlength() == 1 "0" + toHexStr : toHexStr);

}

Systemoutprintln(buildertoString());

//c0bb4f54f1d8b14caf6fe1069e5f93ad

}

<二> 使用BASE64进行加密/解密:

使用BASE64算法通常用作对二进制数据进行加密,加密之后的数据不易被肉眼识别。严格来说,经过BASE64加密的数据其实没有安全性可言,因为它的加密解密算法都是公开的,典型的防菜鸟不防程序猿的呀。经过标准的BASE64算法加密后的数据,通常包含/、+、=等特殊符号,不适合作为url参数传递,幸运的是Apache的Commons Codec模块提供了对BASE64的进一步封装。 (参见最后一部分的说明)

1使用BASE64加密:

BASE64Encoder encoder = new BASE64Encoder();

String cipherText = encoderencode(plainTextgetBytes());

2使用BASE64解密:

BASE64Decoder decoder = new BASE64Decoder();

plainText = new String(decoderdecodeBuffer(cipherText));

3 完整代码示例:

/

功能简述: 使用BASE64进行双向加密/解密

@throws Exception

/

@Test

public void test02() throws Exception {

BASE64Encoder encoder = new BASE64Encoder();

BASE64Decoder decoder = new BASE64Decoder();

String plainText = "Hello , world !";

String cipherText = encoderencode(plainTextgetBytes());

Systemoutprintln("cipherText : " + cipherText);

//cipherText : SGVsbG8gLCB3b3JsZCAh

Systemoutprintln("plainText : " +

new String(decoderdecodeBuffer(cipherText)));

//plainText : Hello , world !

}

<三> 使用DES对称加密/解密:

数据加密标准算法(Data Encryption Standard),和BASE64最明显的区别就是有一个工作密钥,该密钥既用于加密、也用于解密,并且要求密钥是一个长度至少大于8位的字符串。使用DES加密、解密的核心是确保工作密钥的安全性。

1根据key生成密钥:

DESKeySpec keySpec = new DESKeySpec(keygetBytes());

SecretKeyFactory keyFactory = SecretKeyFactorygetInstance("des");

SecretKey secretKey = keyFactorygenerateSecret(keySpec);

2加密 *** 作:

Cipher cipher = CiphergetInstance("des");

cipherinit(CipherENCRYPT_MODE, secretKey, new SecureRandom());

byte[] cipherData = cipherdoFinal(plainTextgetBytes());

3为了便于观察生成的加密数据,使用BASE64再次加密:

String cipherText = new BASE64Encoder()encode(cipherData);

生成密文如下:PtRYi3sp7TOR69UrKEIicA==

4解密 *** 作:

cipherinit(CipherDECRYPT_MODE, secretKey, new SecureRandom());

byte[] plainData = cipherdoFinal(cipherData);

String plainText = new String(plainData);

5 完整的代码demo:

/

功能简述: 使用DES对称加密/解密

@throws Exception

/

@Test

public void test03() throws Exception {

String plainText = "Hello , world !";

String key = "12345678"; //要求key至少长度为8个字符

SecureRandom random = new SecureRandom();

DESKeySpec keySpec = new DESKeySpec(keygetBytes());

SecretKeyFactory keyFactory = SecretKeyFactorygetInstance("des");

SecretKey secretKey = keyFactorygenerateSecret(keySpec);

Cipher cipher = CiphergetInstance("des");

cipherinit(CipherENCRYPT_MODE, secretKey, random);

byte[] cipherData = cipherdoFinal(plainTextgetBytes());

Systemoutprintln("cipherText : " + new BASE64Encoder()encode(cipherData));

//PtRYi3sp7TOR69UrKEIicA==

cipherinit(CipherDECRYPT_MODE, secretKey, random);

byte[] plainData = cipherdoFinal(cipherData);

Systemoutprintln("plainText : " + new String(plainData));

//Hello , world !

}

<四> 使用RSA非对称加密/解密:

RSA算法是非对称加密算法的典型代表,既能加密、又能解密。和对称加密算法比如DES的明显区别在于用于加密、解密的密钥是不同的。使用RSA算法,只要密钥足够长(一般要求1024bit),加密的信息是不能被破解的。用户通过>

超经典的冷笑话!

1 师,站起来回答这个问题。  29,老师,我不会。   师,你自己说,不会该怎么办?   29,坐下。

2 期中考前。生,老师,这题会不会考?  师,我怎么知道?  生,这么没水准的题目,我敢说一定不会考!  师,谁说的!我敢说期中考填充就有这么一题!

3 老师要学生造一个有“糖”字的句子。 小华造句说,我正喝奶茶。 老师奇道,那 ‘糖’在哪里?小华,在奶茶里!

4 某日考试。 小辉,你考得如何? 小战,我交白卷,你呢? 小辉,我也是耶,糟了!老师会不会说我们互相抄袭?

5 上病理学时,有很多学生打瞌睡,教授于是发脾气了,对于真正死亡的时间,医学界一直争论,究竟是脑部停止活动时算是死亡,还是心脏停止时算死亡。但如果是前者,我便不得不宣布:这班学生大多死了。

6 小明是一个刚进小学读书的新生。第一次期中考的成绩单发下来后,小明的爸爸对他说:儿子,希望以后不要每次看到你的名次,就知道你们班有几个人好吗?

7 甲:何谓三生不幸? 乙:生理,生统,生化都当了! 甲:请问师承何派? 乙:在下乃五当派,每考必当五科。

8 经济学教授在上课时说道:同学们,外劳对我们的影响很大,你们猜哪 一国的外劳赚走最多钱?是泰劳、越劳、菲劳,还是…… 某生抢先回答:麦当劳!

9 某一法语学习班的招生说明有一条这么写着:如果你听了一课之后发现不喜欢这课程,那你可以要求退回你的学费。但是,你必须用法语说。

10 老师:为何考这么烂? 小丸:眼镜度数不够…… 小叶:我脖子扭伤。 小芳:前面同学个子太高。 小蓝:隔壁同学用铅笔,我看不清楚。

11 一条狗在街上闲逛,看见橱窗里一张告示:招聘文员。须会打字,懂计算机,精通两种语言。均等机会。 那条狗就进去申请,但是被拒绝了。经理说:我不能雇一条狗在里做事经理说。狗不服气,指着告示上均等机会几字。经理没法,叹了口气问道:你会打字吗?那条狗默默地走到打字机前,准确地打了一封信。经理问:你懂得怎样用计算机吗。 那条狗坐在一座终端机前面,编了个程序,运作准确。 我真的不能雇狗做这份工作,经理气急败坏地说。 就算会打字、懂计算机,但是我需要的雇员要能说两种语言。 那条狗抬头看着经理说:喵……”

12读小学的时候,觉得老师有两种: 一种是男的,一种是女的; 进了国中,发现老师还是有两种: 一种是会打人的,一种不会打人; 考上大学,发现老师也是有两种: 一种是有学问的,一种是没学问的; 自己当了老师之后,还是发现……老师有两种: 一种是有骨气的,一种是没有骨气的。

13 联考过后,在一次庆功宴上,两位研究所的名嘴对上了。 甲:放眼学术界,您堪称是冥师中的冥师! 乙:哪里,您才是亡牌中的亡牌! 甲:听说,您一向是因“财”施教啊! 乙:承让,您不也是“毁”人不倦吗!

14 爸爸:小明,过几天就要考试了。我先考考你,用"敬佩"造个句子吧! 小明:我不知道敬佩是什么意思。 爸爸:那么"遥远"呢? 小明:我不知道遥远是什么意思。 爸爸:那么“计较”呢? 小明:我不知道计较是什么意思。 爸爸:怎么搞的,每一个都不会! 小明:怎么不会?我不是每个都给你造出一个句子吗?

15 有一次上课时,老师突然看到一位学生右手上着石膏,绑着绷带, 于是,老师问:怎么才几天不见你,你的手是怎么啦? 生:断掉了。 师:啊!怎么会断掉? 生:因为我太懒了,所以就断掉了。 师:啥?太懒了手也会断掉啊? 生:没有啦!因为前几天我走在路上,走着走着有一棵小石头就跑到我的鞋子里,因为我懒得把鞋脱下来倒石头嘛,所以就右手扶着电线杆,左脚在半空中摇啊摇的,我想把石头摇下来,结果后面突然跑来一个人,用棍子把我的手打断了。 师:为什么? 生:唉……他以为我触电。

以上就是关于java的MD5withRSA算法可以看到解密的内容么全部的内容,包括:java的MD5withRSA算法可以看到解密的内容么、程序员节哪一天、你听过哪些学术性较强的笑话/段子等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10063056.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-04
下一篇2023-05-04

发表评论

登录后才能评论

评论列表(0条)

    保存