「rsa算法java」rsa算法java scanner

博主:adminadmin 2023-03-19 18:43:08 397

今天给各位分享rsa算法java的知识,其中也会对rsa算法java scanner进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何用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私钥加密

java rsa私钥加密是什么?让我们一起来了解一下吧!

java rsa私钥加密是一种加密算法。私钥加密算法是用私钥来进行加密与解密信息。私钥加密也被称作对称加密,原因是加密与解密使用的秘钥是同一个。

RSA加密需要注意的事项如下:

1. 首先产生公钥与私钥

2. 设计加密与解密的算法

3. 私钥加密的数据信息只能由公钥可以解密

4. 公钥加密的数据信息只能由私钥可以解密

实战演练,具体步骤如下: public class RsaCryptTools {     private static final String CHARSET = "utf-8";     private static final Base64.Decoder decoder64 = Base64.getDecoder();     private static final Base64.Encoder encoder64 = Base64.getEncoder();       /**      * 生成公私钥      * @param keySize      * @return      * @throws NoSuchAlgorithmException      */     public static SecretKey generateSecretKey(int keySize) throws NoSuchAlgorithmException {         //生成密钥对         KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");         keyGen.initialize(keySize, new SecureRandom());         KeyPair pair = keyGen.generateKeyPair();         PrivateKey privateKey = pair.getPrivate();         PublicKey publicKey = pair.getPublic();         //这里可以将密钥对保存到本地         return new SecretKey(encoder64.encodeToString(publicKey.getEncoded()), encoder64.encodeToString(privateKey.getEncoded()));     }     /**      * 私钥加密      * @param data      * @param privateInfoStr      * @return      * @throws IOException      * @throws InvalidCipherTextException      */     public static String encryptData(String data, String privateInfoStr) throws IOException, InvalidKeySpecException, NoSuchAlgorithmException, InvalidKeyException, NoSuchPaddingException, BadPaddingException, IllegalBlockSizeException {           Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");         cipher.init(Cipher.ENCRYPT_MODE, getPrivateKey(privateInfoStr));         return encoder64.encodeToString(cipher.doFinal(data.getBytes(CHARSET)));     }       /**      * 公钥解密      * @param data      * @param publicInfoStr      * @return      */     public static String decryptData(String data, String publicInfoStr) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeySpecException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, UnsupportedEncodingException {         byte[] encryptDataBytes=decoder64.decode(data.getBytes(CHARSET));         //解密         Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");         cipher.init(Cipher.DECRYPT_MODE, getPublicKey(publicInfoStr));         return new String(cipher.doFinal(encryptDataBytes), CHARSET);     }     private static PublicKey getPublicKey(String base64PublicKey) throws NoSuchAlgorithmException, InvalidKeySpecException {         X509EncodedKeySpec keySpec = new X509EncodedKeySpec(Base64.getDecoder().decode(base64PublicKey.getBytes()));         KeyFactory keyFactory = KeyFactory.getInstance("RSA");         return keyFactory.generatePublic(keySpec);     }     private static PrivateKey getPrivateKey(String base64PrivateKey) throws NoSuchAlgorithmException, InvalidKeySpecException {         PrivateKey privateKey = null;         PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.getDecoder().decode(base64PrivateKey.getBytes()));         KeyFactory keyFactory = null;         keyFactory = KeyFactory.getInstance("RSA");         privateKey = keyFactory.generatePrivate(keySpec);         return privateKey;     }       /**      * 密钥实体      * @author hank      * @since 2020/2/28 0028 下午 16:27      */     public static class SecretKey {         /**          * 公钥          */         private String publicKey;         /**          * 私钥          */         private String privateKey;           public SecretKey(String publicKey, String privateKey) {             this.publicKey = publicKey;             this.privateKey = privateKey;         }           public String getPublicKey() {             return publicKey;         }           public void setPublicKey(String publicKey) {             this.publicKey = publicKey;         }           public String getPrivateKey() {             return privateKey;         }           public void setPrivateKey(String privateKey) {             this.privateKey = privateKey;         }           @Override         public String toString() {             return "SecretKey{" +                     "publicKey='" + publicKey + '\'' +                     ", privateKey='" + privateKey + '\'' +                     '}';         }     }       private static void writeToFile(String path, byte[] key) throws IOException {         File f = new File(path);         f.getParentFile().mkdirs();           try(FileOutputStream fos = new FileOutputStream(f)) {             fos.write(key);             fos.flush();         }     }       public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchPaddingException, IOException, BadPaddingException, IllegalBlockSizeException, InvalidKeyException, InvalidKeySpecException {         SecretKey secretKey = generateSecretKey(2048);         System.out.println(secretKey);         String enStr = encryptData("你好测试测试", secretKey.getPrivateKey());         System.out.println(enStr);         String deStr = decryptData(enStr, secretKey.getPublicKey());         System.out.println(deStr);         enStr = encryptData("你好测试测试hello", secretKey.getPrivateKey());         System.out.println(enStr);         deStr = decryptData(enStr, secretKey.getPublicKey());         System.out.println(deStr);     }   }

java RSA算法实现256位密钥怎么做

参考下面代码:

try {

    KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",

            new org.bouncycastle.jce.provider.BouncyCastleProvider());

    final int KEY_SIZE = 128;// 没什么好说的了,这个值关系到块加密的大小,可以更改,但是不要太大,否则效率会低

    keyPairGen.initialize(KEY_SIZE, new SecureRandom());

    KeyPair keyPair = keyPairGen.generateKeyPair();

    return keyPair;

} catch (Exception e) {

    throw new Exception(e.getMessage());

}

关于java中rsa的问题

【实例下载】本文介绍RSA2加密与解密,RSA2是RSA的加强版本,在密钥长度上采用2048, RSA2比RSA更安全,更可靠, 本人的另一篇文章RSA已经发表,有想了解的可以点开下面的RSA文章

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();

}

rsa算法java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于rsa算法java scanner、rsa算法java的信息别忘了在本站进行查找喔。