Шифрование Rsa

  • Автор темы LSD
  • Дата начала
Статус
Закрыто для дальнейших ответов.
L

LSD

Дайте кто нить пример шифрования/дешифрования просто массива байт алгоритмом RSA с использованием Java Security.
 
A

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

LSD

:) я имел ввиду с использованием встроенных возможностей Java Security (уже вроде разобрался), но все равно спасибо :)
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!