`
yuankai
  • 浏览: 107143 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

证书加密解密

    博客分类:
  • java
阅读更多
开始以为可以对文件进行加密,使用后发现不支持文件加密,其中证书类型是浏览器支持的XX.p12证书,现在正在研究Itext使用证书签名加密pdf文件,找了很多资料,这方面的资料实在是太少了。
  
 /**
     * 证书加密解密(不能对文件加密,这个只能对一小段字符加密解密)
     * @param certPath    证书路径
     * @param password    证书密码
     */
    private static void encrypAndDecryption(String certPath,String certPassWord,String encryptData){
        //此类表示密钥和证书的存储设施
        KeyStore keyStore;
        String alias = "";
        //String testEncrypt = "certificate encrypt decryption";
        System.out.println("加密前: " + encryptData);
        try {
            FileInputStream is = new FileInputStream(certPath);
            //得到KeyStore实例
            keyStore = KeyStore.getInstance("PKCS12");
            //从指定的输入流中加载此 KeyStore。
            keyStore.load(is, certPassWord.toCharArray());
            is.close();
            //获取keyStore别名
            alias = (String)keyStore.aliases().nextElement();
            Certificate cert = keyStore.getCertificate(alias);
            //根据给定别名获取相关的私钥
            PrivateKey priKey = (PrivateKey)keyStore.getKey(alias, certPassWord.toCharArray());
            //获取证书的公钥
            PublicKey pubKey = cert.getPublicKey();
            //获取Cipher的实例 getInstance(算法/模式/填充)或getInstance("算法")
            Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
            //公钥初始化Cipher 公钥加密
            cipher.init(Cipher.ENCRYPT_MODE, pubKey);
            //加密
            byte [] encodeEncryp = cipher.doFinal(encryptData.getBytes());
            System.out.println("加密后: " + new String(encodeEncryp));
            //encodeEncryp = cipher.doFinal(getFileContentToByte(encrypFile));
            //私钥初始化Cipher 私钥解密
            cipher.init(Cipher.DECRYPT_MODE, priKey);
            //解密
            byte [] encodeDecryption = cipher.doFinal(encodeEncryp);
            
            String content = new String(encodeDecryption);
            System.out.println("解密后: " + content + "length: " + content.length());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

下面有个测试用的certificate.
分享到:
评论
4 楼 yuankai 2008-12-02  
fjlyxx 写道

代码没看过.不过提两点意见.1.文件中是否有中文,如果有建议进行BASE64转换.2.建议不要使用Cipher,不同中间件的实现是不同的,修改JVM安全文件有可能会影响中间件的安全机制,所以最好自己去实现RSA.再有 你说密码是12345678 好像RSA是一个密码对吧?模和素数. 共需要三个密码.

有中文的,处理中文Itext已经封装好了,有个包。
至于修改jvm的sucerity文件是因为sun不提供这种加密算法才修改的,jce只限于美国和加拿大地区使用。
Cipher 这个类也是Itext包封装好的类,这个因该不会有什么问题的。
我说的密码是证书的密码,这是在CA发布这张证书的时候设置的密码,这张证书只是个私钥而已。
很谢谢你给提的意见。
3 楼 fjlyxx 2008-12-02  
代码没看过.不过提两点意见.

1.文件中是否有中文,如果有建议进行BASE64转换.
2.建议不要使用Cipher,不同中间件的实现是不同的,修改JVM安全文件有可能会影响中间件的安全机制,所以最好自己去实现RSA.

再有 你说密码是12345678 好像RSA是一个密码对吧?模和素数. 共需要三个密码.
2 楼 yuankai 2008-12-02  
edisonwin 写道

密码是多少??

密码是12345678
1 楼 edisonwin 2008-11-05  
密码是多少??

相关推荐

    JAVA 使用数字证书加密解密文件

    总结来说,Java结合RSA算法和数字证书提供了强大的文件加密解密解决方案。通过生成密钥对、创建和管理数字证书,以及使用`Cipher`进行加解密操作,可以确保数据的安全传输和存储。了解并掌握这些技术,对于开发安全...

    java 证书 加密 解密

    Java证书加密解密是Java开发中涉及网络安全的重要环节,它主要涉及到数字证书、SSL/TLS协议、公钥加密和私钥解密等概念。在这个场景中,`Payment Mgr.p12`是一个PKCS12格式的文件,通常用于存储个人身份信息,包括...

    Lua调用C++证书加密解密文件函数实现

    本文将深入探讨如何利用Lua调用C++编写的证书加密解密文件函数,以实现安全的数据保护。 首先,我们需要了解Lua和C++之间的交互机制。Lua提供了`luaL_openlibs`函数来加载标准库,同时也允许我们通过`lua_register`...

    破解 PDF 口令加密 数字证书加密 解密 去除PDF水印 打印限制 复制等

    破解 PDF 口令加密 数字证书加密 解密 去除PDF水印 打印限制 复制等

    使用X.509数字证书加密解密实务(三)-- 使用RSA证书结合对称加密技术加密长数据

    本篇将深入探讨如何在实际应用中结合X.509数字证书与RSA算法来加密解密较长的数据,同时利用对称加密技术提高效率。 首先,X.509数字证书包含了一个公钥,它是非对称加密中的一个关键组成部分。这个公钥可以被任何...

    C# RSA加密解密

    **C# RSA加密解密详解** 在信息安全领域,加密技术是一种至关重要的手段,用于保护数据的隐私和安全性。RSA(Rivest-Shamir-Adleman)算法是一种非对称加密算法,广泛应用于网络通信、数据存储等领域。C#作为.NET...

    python实现无证书加密解密实例

    本文实例讲述了python实现无证书加密解密的方法,分享给大家供大家参考。具体实现方法如下: 无证书加密就是双方不需要维护证书,加密与解密只需要双方约定一个key就可以,无证书加解密的方式应用更广泛一些,python...

    c# RSA读取密钥文件pfx cer 签名验签加密解密工具类 1 包含java形式密钥转换成c# c# 形式密钥转换成java

    7. **工具类设计**:`RSAHelper.cs`和`CertificateUtils.cs`很可能是提供各种RSA相关功能的工具类,如加载密钥、签名验签、加密解密等。`CertificateUtils`类很可能专注于处理证书相关的操作,而`RSAHelper`可能包含...

    RSA加密解密工具,用于文件的加密和解密* RSA加密解密:私钥解密,公钥加密

    9. **应用场景**:RSA加密解密工具常用于网络通信中的数据保护、软件激活、数字证书、电子邮件安全等领域,确保信息在传输过程中不被窃取或篡改。 总之,通过使用这个RSA加密解密工具并遵循操作指南,用户可以有效...

    公钥私钥加密解密数字证书数字签名详解.docx

    ### 公钥私钥加密解密、数字证书与数字签名详解 #### 一、基础知识概述 在探讨公钥私钥加密解密、数字证书以及数字签名之前,我们需要先理解几个核心概念。 **1. 密钥对:** - 在非对称加密技术中,存在两种密钥...

    C#文件加密解密(完整项目)

    本项目"文件加密解密(完整项目)"专注于利用C#进行文件的安全处理,确保数据在传输和存储时的隐私性。 一、C#加密技术基础 C#中实现文件加密主要依赖于.NET Framework提供的加密类库,如System.Security....

    加密证书和RSA加密解密

    加密证书和RSA加密解密是信息安全领域中的重要概念,它们在保护数据安全、验证网络通信双方身份以及确保信息完整性方面发挥着关键作用。在此,我们将深入探讨这些知识点,并结合一个名为"demo"的示例来进一步理解其...

    c++字符串加密解密

    对于初学者,这个项目提供了一个很好的DEs加密解密实践案例,可以学习如何在C++中调用加密库,理解加密解密的基本流程,以及如何在VS2017环境下构建和运行程序。 8. **安全性考虑**: 虽然DES在历史上被广泛使用...

    MFC 加密解密字符串

    总之,MFC中的字符串加密和解密涉及到多种技术,包括但不限于对称加密(如AES)、非对称加密(如RSA)、哈希函数等。开发者应根据具体需求选择合适的加密算法,并合理管理密钥,确保数据的安全性。通过熟练掌握这些...

    加密解密|加密解密支持库

    加密解密支持库是计算机软件开发中不可或缺的一部分,主要用于保护数据的安全性和隐私。在数字化的世界里,无论是个人通信、企业信息存储还是金融交易,都离不开数据的加密与解密技术。下面将详细介绍加密解密的基本...

    ABAP加密和解密.doc

    在ABAP中,有时还需要自定义加密解密逻辑,这时可以利用ABAP的编程能力实现。例如,你可以创建一个自定义加密函数,基于已有的加密算法(如AES)进行扩展,以满足特定的安全需求。同时,别忘了在设计自定义加密算法...

    java公钥加密私钥解密数字证书

    java公钥加密私钥解密与数字证书,数字证书的生成看这里 http://hi.baidu.com/chenminliang/blog/item/2b30db24920ae0338744f9db.html

    加密解密技术内幕资源下载

    加密解密技术是信息安全领域中的核心组成部分,它在保护数据隐私、确保通信安全以及实现数字版权管理等方面发挥着至关重要的作用。在这个“加密解密技术内幕”资源中,我们可以深入探讨这一领域的诸多方面。 首先,...

    JAVA使用数字证书加密文件

    在“JAVA使用数字证书加密文件”的主题中,我们聚焦于如何使用RSA算法结合数字证书对文件进行加密。RSA是一种非对称加密算法,它的安全性基于大数分解的困难性,因此在网络安全中被广泛应用。 首先,我们需要了解几...

Global site tag (gtag.js) - Google Analytics