`

java加密解密总结例子2

阅读更多
java加密解密总结例子2
import java.security.KeyFactory;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;

import org.apache.commons.codec.binary.Base64;
import org.springframework.stereotype.Service;

@Service("cjrRSASignature")
public class CjrRSASignature {

    private static final Base64 BASE64 = new Base64();
    /**
     * 签名算法
     */
    public static final String SIGN_ALGORITHMS = "SHA1WithRSA";

    /**
     * RSA签名
     * 
     * @param content 待签名数据
     * @param privateKey 商户私钥
     * @param encode 字符集编码
     * @return 签名值
     */
    public static String sign(String content, String privateKey, String encode) {
        try {
            PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(BASE64.decode(privateKey));

            KeyFactory keyf = KeyFactory.getInstance("RSA");
            PrivateKey priKey = keyf.generatePrivate(priPKCS8);

            java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);

            signature.initSign(priKey);
            signature.update(content.getBytes(encode));

            byte[] signed = signature.sign();

            return new String(BASE64.encode(signed), "UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    public static String sign(String content, String privateKey) {
        try {
            PKCS8EncodedKeySpec priPKCS8 = new PKCS8EncodedKeySpec(BASE64.decode(privateKey));
            KeyFactory keyf = KeyFactory.getInstance("RSA");
            PrivateKey priKey = keyf.generatePrivate(priPKCS8);
            java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);
            signature.initSign(priKey);
            signature.update(content.getBytes());
            byte[] signed = signature.sign();
            return new String(BASE64.encode(signed), "UTF-8");
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    /**
     * RSA验签名检查
     * 
     * @param content 待签名数据
     * @param sign 签名值
     * @param publicKey 分配给开发商公钥
     * @param encode 字符集编码
     * @return 布尔值
     */
    public static boolean doCheck(String content, String sign, String publicKey, String encode) {
        try {
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            byte[] encodedKey = BASE64.decode(publicKey);
            PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));

            java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);

            signature.initVerify(pubKey);
            signature.update(content.getBytes(encode));

            boolean bverify = signature.verify(BASE64.decode(sign));
            return bverify;

        } catch (Exception e) {
            e.printStackTrace();
        }

        return false;
    }

    public static boolean doCheck(String content, String sign, String publicKey) {
        try {
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            byte[] encodedKey = BASE64.decode(publicKey);
            PublicKey pubKey = keyFactory.generatePublic(new X509EncodedKeySpec(encodedKey));

            java.security.Signature signature = java.security.Signature.getInstance(SIGN_ALGORITHMS);

            signature.initVerify(pubKey);
            signature.update(content.getBytes());

            boolean bverify = signature.verify(BASE64.decode(sign));
            return bverify;

        } catch (Exception e) {
            e.printStackTrace();
        }

        return false;
    }
}
分享到:
评论

相关推荐

    JAVA数据加密解密的实例

    本实例将聚焦于JAVA数据加密解密的实践应用。 首先,让我们理解加密和解密的基本概念。加密是一种将明文(可读信息)转化为密文(不可读信息)的过程,以保护数据不被未经授权的用户访问。解密则是加密的逆过程,将...

    java 加密解密 示例

    总的来说,这个Java加密解密示例提供了一个实际应用加密技术的起点,对于理解和实践Java安全编程有着积极的作用。通过学习和研究这个示例,开发者能够更好地理解如何在实际项目中保护敏感数据的安全。

    Java 公钥和私钥加密解密代码

    在Java编程语言中,公钥和私钥加密解密是一种重要的安全技术,广泛应用于网络通信、数据传输等领域。本文将详细解析如何使用Java实现公钥和私钥的加解密操作,以及相关的关键概念和代码示例。 首先,我们要了解公钥...

    JAVA 加密 解密 源代码

    这个Java程序是一个简单的加密解密工具,主要使用了异或(XOR)运算来实现文本的加密和解密。下面将详细解释其工作原理和代码结构。 首先,程序包含一个主类`Huo`和一个内部类`FirstWindow`。`Huo`类是程序的入口,而...

    java 图片base64 加密解密

    总结来说,Java中的图片Base64加密解密涉及了二进制数据与ASCII字符串之间的转换,这对于在网络上传输或存储非文本数据(如图像)非常有用。虽然`sun.misc`包中的类已不再推荐,但理解其工作原理有助于更好地理解和...

    加密解密字符串的例子

    这个压缩包文件中的"加密解密字符串的例子"很可能是提供了一个关于如何在编程中实现字符串加密和解密的示例。接下来,我们将深入探讨加密解密的基础知识以及可能涉及的技术。 1. 加密解密原理: 加密是将明文(可...

    java加密狗读取例子

    这个库封装了与加密狗通信的底层细节,如I/O操作和数据加密解密,使得开发者可以通过调用高级接口来实现所需的功能。 在提供的"java加密狗读取例子"中,我们可以预见到以下关键知识点: 1. **设备识别**:首先,...

    JAVA加密解密2

    本文将深入探讨“JAVA加密解密2”这一主题,结合给定的标签“源码”和“工具”,我们将讨论Java中的加密机制、常用的加密算法以及如何在实际项目中应用它们。 Java为开发者提供了丰富的加密库,如Java Cryptography...

    AES JS加密JAVA解密

    总结来说,"AES JS加密JAVA解密"涉及到的是跨语言的加密解密实践,主要依赖于JavaScript的CryptoJS库和Java的`javax.crypto`包。在实际操作中,需要确保两边的加密参数(如密钥、模式和填充方式)一致,同时考虑到...

    nginxRSA加密,java解密例子

    本文将深入探讨如何在Nginx中实现RSA加密,并使用Java进行解密,以此来保护数据的安全性。 首先,让我们了解RSA加密算法的基础。RSA(Rivest-Shamir-Adleman)是一种非对称加密算法,它使用一对密钥——公钥和私钥...

    RAS公钥加密私钥解密的例子(加密文件)

    在提供的压缩包中,可能包含了一个实现RSA加密解密的示例程序或者代码片段,用户可以通过运行这个程序来体验RSA加密和解密的过程。为了保证安全性,应该注意密钥的管理和存储,避免私钥泄露,同时,由于RSA加密效率...

    java字符串加密解密

    总的来说,Java字符串加密解密涉及到多个层面的知识,包括加密算法、密钥管理、安全协议等。理解和熟练掌握这些技术对于保障网络安全至关重要。在实际开发中,还需要关注加密算法的版本限制、密钥的安全存储以及法律...

    MD5 加密解密例子

    在Java EE(J2EE)环境中,MD5加密通常结合各种框架如Struts、Spring和Hibernate来实现。Struts是MVC架构的Web开发框架,Spring提供了全面的DI(依赖注入)和AOP(面向切面编程)功能,而Hibernate则是一个流行的ORM...

    Java中对字符串进行加密和解密

    下面是一个使用DES算法实现的加密解密工具类的例子: ```java import java.io.*; import javax.crypto.*; import javax.crypto.spec.*; import java.security.*; import java.security.spec.*; import ...

    很强的Java加密解密算法源码.zip

    Java加密解密是软件开发中的重要环节,尤其是在处理敏感数据时,确保数据的安全性至关重要。这份"很强的Java加密解密算法源码.zip"压缩包很可能是包含了一系列用于加密和解密操作的Java代码示例,涵盖了多种加密算法...

    JAVA数据加密解密的实例+Java实用源码整理learns

    本资源"JAVA数据加密解密的实例+Java实用源码整理learns"提供了关于Java中数据加密解密的实践案例和相关源码,帮助开发者深入理解和应用这些技术。 首先,我们要了解加密的基本概念。加密是一种将原始数据(明文)...

    JAVA加密和解密技术

    在IT领域,尤其是在信息安全和数据保护方面,加密和解密技术是至关重要的。本文将深入探讨Java中的加密和解密技术,以及...通过对"SetEncrypt.java"的分析,我们可以进一步了解如何在Java中实际实施这些加密解密机制。

    BASE64加密解密

    另外,`BASE64加密解密 方法.txt`很可能是详细介绍了如何在Java中实现BASE64加密解密的步骤和技术细节。 综上所述,BASE64加密解密在Java开发中是一个实用的技术,它允许开发者轻松地在二进制数据和ASCII字符串之间...

    Java版Des加密解密源码

    java版Des加密解密源码 DES加密解密程序的主程序在 FileDES类中 运行时使用的例子是本目录下的111.doc文件,运行后自动生成222.doc文件和333.doc文件。 其中111.doc文件加密后的文件是222.doc文件,222.doc文件...

    Java加密解密之非对称加密

    在Java中实现RSA加密解密,可以使用`javax.crypto.Cipher`类。以下是一个简单的RSA加密解密的Java代码示例: ```java import java.security.*; import javax.crypto.*; public class RSAExample { private Cipher...

Global site tag (gtag.js) - Google Analytics