?
对称解密的实现
对称加密/解密算法在电子商务交易过程中存在几个问题:
(1)?????? 要求提供一条安全的渠道使通讯双方在首次通讯时协商一个共同的密钥。直接的面对面协商可能是不现实而且难于实施的,所以双方可能需要借助于邮件和电话等其它相对不够安全的手段来进行协商;
(2)?????? 密钥的数目难于管理。因为对于每一个合作者都需要使用不同的密钥,很难适应开放社会中大量的信息交流;
(3)?????? 对称加密算法一般不能提供信息完整性的鉴别。它无法验证发送者和接受者的身份;
对称密钥的管理和分发工作是一件具有潜在危险的和烦琐的过程。对称加密是基于共同保守秘密来实现的,采用对称加密技术的贸易双方必须保证采用的是相同的密钥,保证彼此密钥的交换是安全可靠的,同时还要设定防止密钥泄密和更改密钥的程序。
对称解密的代码实现如下:
//从密钥文件中读密钥
?? SecretKey key=null;
?? try
?? {ObjectInputStream keyFile=new ObjectInputStream(
???? new FileInputStream("c:\\安全文件\\"+misClass.username+"\\对称\\对称密钥\\yhb.des"));
??? key=(SecretKey)keyFile.readObject();
??? keyFile.close();
??? }
??? catch(FileNotFoundException ey1)
??? {
??? System.out.println("Error when read keyFile");
??? System.exit(0);
??? }
??? catch(Exception ey2)
??? {
??? System.out.println("error when read the keyFile");
??? System.exit(0);
??? }
?? //用key产生Cipher
??? Cipher cipher=null;
??? try
{
//设置算法,应该与加密时的设置一样
cipher=Cipher.getInstance("DES");
//设置解密模式
???? cipher.init(Cipher.DECRYPT_MODE,key);
???? }catch(Exception ey3)
???? {
???? System.out.println("Error when create the cipher");
???? System.exit(0);
???? }
???? //从对话框中取得要解密的文件并解密
???? File file=new File(dirstring,string1);
???? String filename=file.getName();
??? try
{
//输出流,请注意文件名称的获取
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(
????????? "c:\\安全文件\\文件\\"+filename.substring(0,filename.length()-4)));
???? //输入流
????? CipherInputStream in=new CipherInputStream(new BufferedInputStream(
??????????? new FileInputStream(file)),cipher);
??? int thebyte=0;
??? while((thebyte=in.read())!=-1)
??? {
??? out.write(thebyte);
??? }
????? in.close();
????? out.close();
????? }
????? catch(Exception ey5)
????? {
????? System.out.println("Error when encrypt the file");
????? System.exit(0);
????? }
分享到:
相关推荐
在Java中,Bouncy Castle的`org.bouncycastle.jce.provider.BouncyCastleProvider`提供了一个强大的安全提供者,可以用来生成和管理RSA密钥对。在生成密钥对后,可以将其导出为PEM格式的字符串,如以下代码所示: `...
标题提及的"bouncycastle jar包,版本: jdk15to18-1.73",是指针对Java 1.5至1.8版本的Bouncy Castle库的1.73版,提供了两个jar文件:bcprov-ext-jdk15to18-1.73.jar和bcprov-jdk15to18-1.73.jar。 1. **Bouncy ...
例如,如果你需要创建一个RSA密钥对,可以使用`org.bouncycastle.jce.provider.BouncyCastleProvider`作为安全提供者,然后调用`KeyPairGenerator`的相关方法。对于数据加密解密,可以通过`Cipher`类,指定对应的...
BouncyCastle库提供了`org.bouncycastle.jce.provider.BouncyCastleProvider`类,它是Java加密服务提供者,包含了国密算法的支持。为了使用它,需要在代码中添加以下行: ```java Security.addProvider(new ...
import org.bouncycastle.jce.provider.BouncyCastleProvider; // 添加Bouncy Castle提供商 Security.addProvider(new BouncyCastleProvider()); // 创建AES密钥 SecretKey key = KeyGenerator.getInstance...
代码可能会使用Bouncy Castle库中的类,如`org.bouncycastle.jce.provider.BouncyCastleProvider`,来实现RSA算法的功能。 为了进一步理解这个程序,你需要阅读并分析RSA.txt中的代码。如果你不熟悉Java或加密算法...
这个库是Bouncy Castle提供的,Bouncy Castle是一个著名的开源密码学软件项目,提供了大量的加密算法、协议实现以及相关的工具。"jdk15on"表示这个版本适用于Java 1.5及以上版本。 Bouncy Castle库分为两部分:...
然后,通过Java Cryptography Extension (JCE) API来调用Bouncy Castle提供的加密服务。 5. **安全性** 由于加密技术的快速发展,保持库的更新非常重要。定期升级到最新版本的Bouncy Castle可以帮助抵御新的安全...
在Android平台上,由于默认的Java Cryptography Extension (JCE)有一些限制,如不能处理高强度的加密算法,Bouncy Castle就成为了一个理想的替代方案。 首先,我们需要下载Bouncy Castle的jar包,这里我们看到的...
2. **生成密钥对**:使用BouncyCastle的`ECKeyPairGenerator`生成SM2密钥对。 3. **加密和解密**:使用密钥对进行加密和解密操作。 ### 2. SM3 哈希函数 **SM3** 是一种密码学哈希函数,类似于SHA-256,但具有中国...
总的来说,Java提供了丰富的库和API来支持信息安全的开发,包括JCE、Bouncy Castle Provider以及其他相关的工具类和接口。开发者需要掌握这些工具的使用,同时了解信息安全的基本理论,才能有效地构建安全的应用程序...
在Java中实现OpenPGP的加解密功能,通常需要依赖BouncyCastle库,这是一个强大的加密工具包,包含了对OpenPGP的支持。 在开始之前,需要下载并安装两个关键的BouncyCastle JAR包:`bcprov-jdk15on`和`bcpg-jdk15on`...
另一方面,“bcprov-jdk15on-154.jar”是Bouncy Castle提供的一个Java加密库,它提供了广泛的加密算法,包括对称加密、非对称加密、数字签名以及消息摘要算法。Bouncy Castle库特别适合处理更高级的密码学需求,比如...
3. **BCryptprov-jdk16-146.jar**:这个文件是Bouncy Castle提供的Java Cryptography Extension (JCE)提供者。Bouncy Castle是一个开放源代码的安全库,它提供了许多加密算法,包括AES。在使用WinZipAES时,可能需要...
此外,还需要引入几个第三方库,如bcprov-jdk16-146.jar(Bouncy Castle加密库),commons-codec-1.9.jar和commons-lang3-3.0.1.jar,以支持加密和解密操作。 4. **加密和解密的互操作性**:在ABAP和JAVA之间进行...
import org.bouncycastle.jce.provider.BouncyCastleProvider; ``` 注意,如果使用了BouncyCastle提供者,需要先添加到JVM中,因为它包含了更强大的加密功能。 2. 创建KeyPairGenerator实例并初始化: ```java ...
import org.bouncycastle.jce.provider.BouncyCastleProvider; Security.addProvider(new BouncyCastleProvider()); Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding", "BC"); SecretKeySpec ...
在某些情况下,为了使用Bouncy Castle提供的特定功能,可能需要将其jar文件(如`bcprov-jdk15on-xx.x.x.jar`)加入到项目的类路径中。 4. **其他辅助库**:SSH2的实现可能还需要一些辅助库,例如处理ASN.1编码的库...
总的来说,该博客文章通过`RSAEncrypto.java`和`RSADecrypto.java`文件提供了使用Java进行RSA加密解密和签名验证的示例代码,涵盖了Sun JCE库和Bouncy Castle库的使用,这对于理解RSA加密机制和实践Java安全编程非常...