Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Шифрование Rsa
Форум программистов > Системное программирование > Java
LSD
Дайте кто нить пример шифрования/дешифрования просто массива байт алгоритмом RSA с использованием Java Security.
AlexMoney
Может не совсем то но когдато в лабах делал RSA
import java.util.Vector;
import java.util.Random;
public class Rsa
{
    public Vector sp;
    private int p,q,n,m,d,e;

    public Rsa()
    {
        setSp();
    }
    private void init()
    {
        Random random=new Random();
        p=((Integer)(sp.get(random.nextInt(sp.size())))).intValue();
        while ((q=((Integer)(sp.get(random.nextInt(sp.size())))).intValue())==p);
        n=p*q;
        m=(p-1)*(q-1);
        d=random.nextInt(10000);
        e = 2;
        while ((d*e%m) > 1)
            e++;
    }
    public void print()
    {
        System.out.println("Генерация RSA закончена");
        System.out.println("Закрытый ключ: n="+n+" e="+e);
        System.out.println("Открытый ключ: n="+n+" d="+d);
    }
    public void test()
    {
        String s1="",s2="";
        int t;
        for(int i=1;i<256;i++)
        {
            System.out.print(i+" ");
            t=sk(i);
            s1=s1+" "+t;
            s2=s2+" "+sd(t);
        }
        System.out.println();
        System.out.println(s1);
        System.out.println(s2);
    }
    private int sk(int s)
    {
        return powMod(s,d);    
    }
    private int sd(int s)
    {
        return powMod(s,e);
    }
    private int powMod(int h,int s)
    {
        double i=1;
        for (;s>0;s--)
            i=(double)i*h%n;
        return (int)i;
    }
    //2,3,5,7,11,13,17...997
    private void setSp()
    {
        sp=new Vector();
        int i=1,j;
        boolean f;
        while (i++<1000)
        {
            f=true;
            for (j=0;f&&j<sp.size();j++)
                if(i%((Integer)(sp.get(j))).intValue()==0)
                    f=false;
            if (f)
                sp.add(new Integer(i));
        }
    }
    public void prSp()
    {
        for (int i=0;i<sp.size();i++)
            System.out.print(((Integer)(sp.get(i))).intValue()+" ");
    }
    public static void main(String[] arg)
    {
        Rsa rsa=new Rsa();
        rsa.init();
        rsa.print();
        rsa.test();
    }
}
LSD
smile.gif я имел ввиду с использованием встроенных возможностей Java Security (уже вроде разобрался), но все равно спасибо smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2008 IPS, Inc.