java خوارزمية - إنشاء زوج مفاتيح RSA وترميز خاص كسلسلة




بلغة جافا (2)

للإخراج كـ Hex-String

import java.security.*;
public class Test {
    public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException {
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
        keyGen.initialize(512);
        byte[] publicKey = keyGen.genKeyPair().getPublic().getEncoded();
        StringBuffer retString = new StringBuffer();
        for (int i = 0; i < publicKey.length; ++i) {
            retString.append(Integer.toHexString(0x0100 + (publicKey[i] & 0x00FF)).substring(1));
        }
        System.out.println(retString);
    }
}

للإخراج كقيم بايت

import java.security.*;
import java.security.*;
public class Test {
    public static void main(String[] args) throws NoSuchAlgorithmException, NoSuchProviderException {
        KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
        keyGen.initialize(512);
        byte[] publicKey = keyGen.genKeyPair().getPublic().getEncoded();
        StringBuffer retString = new StringBuffer();
        retString.append("[");
        for (int i = 0; i < publicKey.length; ++i) {
            retString.append(publicKey[i]);
            retString.append(", ");
        }
        retString = retString.delete(retString.length()-2,retString.length());
        retString.append("]");
        System.out.println(retString); //e.g. [48, 92, 48, .... , 0, 1]
    }
}

أريد إنشاء مفتاح مفاتيح RSA بسرعة 512 بت ، ثم تشفير مفتاح عمومي كسلسلة. كيف يمكنني تحقيق ذلك؟


استخدم Integer.parseInt(yourString)

تذكر الاشياء التالية:

Integer.parseInt("1"); // حسنا

Integer.parseInt("-1"); // حسنا

Integer.parseInt("+1"); // حسنا

Integer.parseInt(" 1"); // استثناء (مساحة فارغة)

Integer.parseInt("2147483648"); // استثناء (عدد صحيح محدد بحد أقصى 2،147،483،647)

Integer.parseInt("1.1"); // استثناء ( . أو ، أو أي شيء غير مسموح به)

Integer.parseInt(""); // استثناء (ليس 0 أو شيء)

يوجد نوع واحد من الاستثناءات: NumberFormatException





java encryption rsa