我正在尝试在Visual Studio中编写加密程序,但每次运行时都会出现此错误
当前上下文中不存在名称“i”。
这是我使用的代码:
namespace RSA
{
class RSA
{
public static bool IsPrime(int number)
{
if (number < 2) return false;//daca numarul este mai mic ca 2 returneaza false
if (number % 2 == 0) return (number == 2);//daca numarul este par va returna numarul fiind egal cu doi
int root = (int)Math.Sqrt((Double)number);//variabila root care rotunjeste patratul numarului
for(i = 3; i <= root; i += 2)//de la i=3 pana la variabila root din doi in doi
{
if (number % i == 0)//daca numarul mod i este zero
return false;//returneaza false
}
return true;//daca totul este bine returneaza true
}
public static long Square(long a)//patratul numarului a
{
return (a * a);//returneaza patratul numarului
}
public static long BigMod(int b ,int p,int m)//variabila b la puterea p impartit(mod) m
{
if (p == 0)//daca puterea este 0
return 1;//se retrurneaza 1
else//altfel
if (p % 2 == 0)//daca este 0
return Square(BigMod(b, p / 2, m)) % m;//se efectueaza partatul finctiei bigmod
else//altfel
return ((b % m) * BigMod(b, p - 1, m)) % m;//se efectueaza aceasta functie
}
public static int n_value(int prim1,int prim2)//se dau doua numere prime
{
return (prim1*prim2);//se returneaza primul numar prim inmultit cu al doilea numar prim
}
public static int phi(int prim1 , int prim2)//se dau doua numere prime
{
return ((prim1-1)*(prim2-1));//se returneaza primul numar prim minus 1 inmultit cu al doilea numar prim minus 1
}
public static Int32 PrivateKey(int phi,int E,int N)
{
int D=0;
int res=0;
for (D = 0; ;D++)
{
res = (D * E) % phi;
if(res == 1)
break;
}
}
}
}
答案 0 :(得分:5)
for(i = 3; i <= root; i += 2)
应该是
for(int i = 3; i <= root; i += 2)
您必须在使用之前初始化变量i