可以生成RSA公钥

发布于 2025-02-01 01:54:01 字数 1466 浏览 3 评论 0原文

我正在尝试了解RSA公共密钥一代。经过一些研究,我创建了一个“简单”的代码,该代码应该返回公共密钥,但我不知道为什么,事实并非如此。谁能告诉我为什么并解释一下?

public static byte[] GetTokens(String paramString) {
    StringTokenizer stringTokenizer = new StringTokenizer(paramString, ",");
    byte[] arrayOfByte = new byte[stringTokenizer.countTokens()];
    for (byte b1 = 0; stringTokenizer.hasMoreTokens(); b1++) {
       arrayOfByte[b1] = Byte.parseByte(stringTokenizer.nextToken());
    }
    return arrayOfByte;
}

public static PublicKey GenPublicKey() throws Exception {
    BufferedReader bufferedReader  = new BufferedReader(new FileReader("input_text"));

    try {
        String str1 = bufferedReader.readLine();
        String str2 = bufferedReader.readLine();
        
        BigInteger bigInteger1 = new BigInteger(GetTokens(str1));
        BigInteger bigInteger2 = new BigInteger(GetTokens(str2));
        
        RSAPublicKeySpec rSAPublicKeySpec = new RSAPublicKeySpec(bigInteger1, bigInteger2);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicKey = keyFactory.generatePublic(rSAPublicKeySpec);
        return publicKey;
    }
    catch (NoSuchAlgorithmException e) {
        System.out.println("Exception thrown : " + e);
        throw new IOException("Error reading key, ");
    }

    finally {
        try {
            bufferedReader.close();
        } catch (Exception exception) {}
    }
}

为了测试它,我在“ input_text”文件上编写了Aleatory编号: 8,33 6,18

I'm trying to learn about rsa public key generations. After some researches I create an "simple" code that should return a public key but I don't know why, it doesn't. Can anyone tell me why and explaine it?

public static byte[] GetTokens(String paramString) {
    StringTokenizer stringTokenizer = new StringTokenizer(paramString, ",");
    byte[] arrayOfByte = new byte[stringTokenizer.countTokens()];
    for (byte b1 = 0; stringTokenizer.hasMoreTokens(); b1++) {
       arrayOfByte[b1] = Byte.parseByte(stringTokenizer.nextToken());
    }
    return arrayOfByte;
}

public static PublicKey GenPublicKey() throws Exception {
    BufferedReader bufferedReader  = new BufferedReader(new FileReader("input_text"));

    try {
        String str1 = bufferedReader.readLine();
        String str2 = bufferedReader.readLine();
        
        BigInteger bigInteger1 = new BigInteger(GetTokens(str1));
        BigInteger bigInteger2 = new BigInteger(GetTokens(str2));
        
        RSAPublicKeySpec rSAPublicKeySpec = new RSAPublicKeySpec(bigInteger1, bigInteger2);
        KeyFactory keyFactory = KeyFactory.getInstance("RSA");
        PublicKey publicKey = keyFactory.generatePublic(rSAPublicKeySpec);
        return publicKey;
    }
    catch (NoSuchAlgorithmException e) {
        System.out.println("Exception thrown : " + e);
        throw new IOException("Error reading key, ");
    }

    finally {
        try {
            bufferedReader.close();
        } catch (Exception exception) {}
    }
}

To testing it I wrote aleatory numbers on "input_text" file:
8,33
6,18

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故事和酒 2025-02-08 01:54:01

我将提供您需要生成RSA公共密钥的代码:

import java.io.*;
import java.security.*;
import java.security.spec.*;
import java.util.*;

public class Hello {
    public static void main(String[] args) throws NoSuchAlgorithmException {
        // We generate an instance that allows to create private/public key pairs
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");

        // We use 1024 bits lenght
        keyPairGenerator.initialize(2048);

        // We generate key pair
        KeyPair keyPair = keyPairGenerator.generateKeyPair();

        // Original message
        String originalMessage = "Hello";

        // We obtain public key
        Key publicKey = keyPair.getPublic();

        // We convert the string in order to send the Key to the emitter
        String publicKeyText = keyToString(publicKey);
        System.out.println("Public key: " + publicKeyText);
    }

    private static String keyToString(Key publicKey) {
        byte[] publicKeyBytes = publicKey.getEncoded();
        String key = Base64.getEncoder().encodeToString(publicKeyBytes);

        return key;
    }
}

I will provide the code you need to generate a RSA public key:

import java.io.*;
import java.security.*;
import java.security.spec.*;
import java.util.*;

public class Hello {
    public static void main(String[] args) throws NoSuchAlgorithmException {
        // We generate an instance that allows to create private/public key pairs
        KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");

        // We use 1024 bits lenght
        keyPairGenerator.initialize(2048);

        // We generate key pair
        KeyPair keyPair = keyPairGenerator.generateKeyPair();

        // Original message
        String originalMessage = "Hello";

        // We obtain public key
        Key publicKey = keyPair.getPublic();

        // We convert the string in order to send the Key to the emitter
        String publicKeyText = keyToString(publicKey);
        System.out.println("Public key: " + publicKeyText);
    }

    private static String keyToString(Key publicKey) {
        byte[] publicKeyBytes = publicKey.getEncoded();
        String key = Base64.getEncoder().encodeToString(publicKeyBytes);

        return key;
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文