「rsajava算法」rsa算法 java

博主:adminadmin 2022-12-04 05:03:05 68

本篇文章给大家谈谈rsajava算法,以及rsa算法 java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何用java实现128位密钥的RSA算法

 import javax.crypto.Cipher;

 import sun.misc.BASE64Decoder;

 import sun.misc.BASE64Encoder;

 import java.io.FileInputStream;

 import java.io.FileOutputStream;

 import java.io.ObjectInputStream;

 import java.io.ObjectOutputStream;

 import java.security.Key;

 import java.security.KeyPair;

 import java.security.KeyPairGenerator;

import java.security.SecureRandom;

 public class RSA_Encrypt {

 /** 指定加密算法为DESede */

 private static String ALGORITHM = "RSA";

 /** 指定key的大小 */

 private static int KEYSIZE = 128;

 /** 指定公钥存放文件 */

 private static String PUBLIC_KEY_FILE = "PublicKey";

 /** 指定私钥存放文件 */

 private static String PRIVATE_KEY_FILE = "PrivateKey";

// private static String PUBLIC_KEY_FILE = "D://PublicKey.a";

// private static String PRIVATE_KEY_FILE = "D://PrivateKey.a";

 

 

 /**

 * 生成密钥对

 */

 private static void generateKeyPair() throws Exception{

   /** RSA算法要求有一个可信任的随机数源 */

    SecureRandom sr = new SecureRandom();

    /** 为RSA算法创建一个KeyPairGenerator对象 */

    KeyPairGenerator kpg = KeyPairGenerator.getInstance(ALGORITHM);

   /** 利用上面的随机数据源初始化这个KeyPairGenerator对象 */

    kpg.initialize(KEYSIZE, sr);

    /** 生成密匙对 */

    KeyPair kp = kpg.generateKeyPair();

    /** 得到公钥 */

    Key publicKey = kp.getPublic();

    /** 得到私钥 */

    Key privateKey = kp.getPrivate();

    /** 用对象流将生成的密钥写入文件 */

    ObjectOutputStream oos1 = new ObjectOutputStream(new FileOutputStream(PUBLIC_KEY_FILE));

    ObjectOutputStream oos2 = new ObjectOutputStream(new FileOutputStream(PRIVATE_KEY_FILE));

    oos1.writeObject(publicKey);

    oos2.writeObject(privateKey);

    /** 清空缓存,关闭文件输出流 */

    oos1.close();

    oos2.close();

 }

 /**

 * 加密方法

 * source: 源数据

 */

 public static String encrypt(String source) throws Exception{

    generateKeyPair();

    /** 将文件中的公钥对象读出 */

    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(PUBLIC_KEY_FILE));

    Key key = (Key) ois.readObject();

    ois.close();

    /** 得到Cipher对象来实现对源数据的RSA加密 */

    Cipher cipher = Cipher.getInstance(ALGORITHM);

    cipher.init(Cipher.ENCRYPT_MODE, key);

    byte[] b = source.getBytes();

    /** 执行加密操作 */

    byte[] b1 = cipher.doFinal(b);

    BASE64Encoder encoder = new BASE64Encoder();

    return encoder.encode(b1);

 }

 /**

 * 解密算法

 * cryptograph:密文

 */

 public static String decrypt(String cryptograph) throws Exception{

    /** 将文件中的私钥对象读出 */

    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(PRIVATE_KEY_FILE));

    Key key = (Key) ois.readObject();

    /** 得到Cipher对象对已用公钥加密的数据进行RSA解密 */

    Cipher cipher = Cipher.getInstance(ALGORITHM);

    cipher.init(Cipher.DECRYPT_MODE, key);

    BASE64Decoder decoder = new BASE64Decoder();

    byte[] b1 = decoder.decodeBuffer(cryptograph);

    /** 执行解密操作 */

    byte[] b = cipher.doFinal(b1);

    return new String(b);

 }

  

 public static void main(String[] args) {

  try {

   String source = "Hello World!";//要加密的字符串

   String cryptograph = encrypt(source);

   System.out.println(cryptograph);

   

   String target = decrypt(cryptograph);//解密密文

   System.out.println(target);

  } catch (Exception e) {

   // TODO Auto-generated catch block

   e.printStackTrace();

  }//生成的密文

 }

}

Java通过RSA算法获取公私钥对 将公钥提供出去 如何获取字符串的公钥

直接将公匙BYTE数组转换为16进制的串啊

private static char hexTable[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};

public static String toHexString(byte bytes[])

{

StringBuilder sb = new StringBuilder();

for (int i = 0; i bytes.length; i++)

{

char chars[] = new char[2];

int d = (bytes[i] 240) 4;

int m = bytes[i] 15;

chars[0] = hexTable[d];

chars[1] = hexTable[m];

sb.append(chars);

}

return sb.toString();

}

关闭JAVA中RSA算法问题

可能是因为编译时和运行时的jdk版本不一致造成的,试试将run中的classpath、jre配置跟项目的jre保持一致。

关于rsajava算法和rsa算法 java的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-04,除非注明,否则均为首码项目网原创文章,转载请注明出处。