社区
图形处理/算法
帖子详情
谁知道3des中pkcs5填充方式怎么弄?和pkcs7填充有什么不同?
zero1977
2004-08-04 11:59:22
谁知道3des中pkcs5填充方式怎么弄?和pkcs7填充有什么不同?
...全文
895
4
打赏
收藏
谁知道3des中pkcs5填充方式怎么弄?和pkcs7填充有什么不同?
谁知道3des中pkcs5填充方式怎么弄?和pkcs7填充有什么不同?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
名牌大灰狼
2004-08-26
打赏
举报
回复
import java.security.*;
import javax.crypto.*;
//
// encrypt and decrypt using the DES private key algorithm
public class PrivateExample {
public static void main (String[] args) throws Exception {
//
// check args and get plaintext
if (args.length !=1) {
System.err.println("Usage: java PrivateExample text");
System.exit(1);
}
byte[] plainText = args[0].getBytes("UTF8");
//
// get a DES private key
System.out.println( "\nStart generating DES key" );
KeyGenerator keyGen = KeyGenerator.getInstance("DES");
keyGen.init(56);
Key key = keyGen.generateKey();
System.out.println( "Finish generating DES key" );
//
// get a DES cipher object and print the provider
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
System.out.println( "\n" + cipher.getProvider().getInfo() );
//
// encrypt using the key and the plaintext
System.out.println( "\nStart encryption" );
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] cipherText = cipher.doFinal(plainText);
System.out.println( "Finish encryption: " );
System.out.println( new String(cipherText, "UTF8") );
//
// decrypt the ciphertext using the same key
System.out.println( "\nStart decryption" );
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] newPlainText = cipher.doFinal(cipherText);
System.out.println( "Finish decryption: " );
System.out.println( new String(newPlainText, "UTF8") );
}
}
■私钥密码术样本执行
D:\IBM>java PrivateExample "This is a test!"
Start generating DES key
Finish generating DES key
SunJCE Provider (implements DES, Triple DES, Blowfish, PBE, Diffie-Hellman,
HMAC-MD5, HMAC-SHA1)
Start encryption
Finish encryption:
Kdkj4338*3n1#kxkgtixo4
Start decryption
Finish decryption:
This is a test!
名牌大灰狼
2004-08-26
打赏
举报
回复
什么是填充?
如前所述,如果使用分组密码而消息长度不是块长度的整数倍,那么,必须用字节填充最后一个块以凑成完整的块大小。有许多方法填充块,譬如全用零或一。在本教程中,我们将对私钥加密使用PKCS5 填充,而对公钥加密使用PKCS1。
使用PKCS5 时,由一个其值表示剩余字节数的重复字节来填充短块。我们不会在本教程中更深入地讨论填充算法,但您需要了解的信息是,JDK 1.4 支持下列填充技术:
无填充
·PKCS5
·OAEP
·SSL3
BouncyCastle 库(请参阅第三方库充实了安全性和参考资料)支持其它填充技术。
hujack
2004-08-26
打赏
举报
回复
是加密吗?
yturieo
2004-08-16
打赏
举报
回复
太专业,帮你顶。
3D
ES
加解密/
PKCS5
Padding/
PKCS7
Padding
1 说明 2 完整代码 package com.example.demo; import org.junit.jupiter.api.T
es
t; import org.springframework.boot.t
es
t.context.SpringBootT
es
t; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.Secr
PHP实现
3D
ES
加密,加密模式MCRYPT_MODE_CBC,
填充
方式
PKCS7
PADDING,密钥不足补0
为什么要对数据进行加密 数据的安全性越来越得以重视。举个例子说,保存在数据库
中
的用户密码并不是明文保存的,而是采用md5加密后存储,这样即使数据库被脱库,仍能保证用户密码安全。但是,md5是不可逆的,开发人员根本就不
知道
用户的密码到底是什么。有些时候,我们希望加密后存储的数据是可逆的,比如一些接口密钥,这样即使数据库被脱库,如果没有对应的解密
方式
,攻击者盗取的密钥也是不能使用的。 ...
Java版适用于PHP版
3D
ES
加密解密(PHP语言开发的MCRYPT_
3D
ES
算法、MCRYPT_MODE_ECB模式、
PKCS7
填充
方式
)
import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import org.apache.log4j.Logger; impor
3D
ES
数据加密算法
3D
ES
数据加密算法是一种可逆的对称加密算法,也称三重数据加密算法(英语:Triple Data Encryption Algorithm,缩写为TDEA,Triple DEA),或称
3D
ES
(Triple D
ES
),它是一种为了替代原先D
ES
而建立的数据加密标准。
3D
ES
加密算法原理
一、
3D
ES
加密算法简析:
3D
ES
,也称为
3D
ES
ede 或 TripleD
ES
,是三重数据加密算法,相当于是对每个数据库应用三次D
ES
的对称加密算法。 由于D
ES
密码长度容易被暴力破解,所以
3D
ES
算法通过对D
ES
算法进行改进,增加D
ES
的密钥长度来避免类似的攻击,针对每个数据块进行三次D
ES
加密;因此,
3D
ES
加密算法并非什么新的加密算法,是D
ES
的一个更安全的变形,它以D
ES
为基本模块,通过组合分组方法设计出分组加密算法。。
3D
ES
是D
ES
向A
ES
过渡的加密算法,它使用2个或者3个56位的密钥对
图形处理/算法
19,463
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章