xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 3KB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-12
  • 語(yǔ)言: C/C++
  • 標(biāo)簽:

資源簡(jiǎn)介

個(gè)人編的RSA加密程序,要想了解具體算法說(shuō)明或者其他加密算法請(qǐng)關(guān)注我的博客----適合任何對(duì)算法理解不透徹的密碼初學(xué)者和愛(ài)好者。

資源截圖

代碼片段和文件信息

#include
#include

/*?函數(shù)申明?*/
int?long_n(int?n);
int?shuru(char?*arr?int?k?char?*wei?int?is_first);
void?jiami(char?*arr?int?k?int?e?int?n);

/*?輸入函數(shù),記錄從鍵盤輸入的明文*/
int?shuru(char?*arr?int?k?char?*wei?int?is_first)
{
int?i;
char?ch;
/*判斷是否為第一分組的輸入,如果是則獲取輸入的字符,否則就將上一分組最后獲取的字符作為這一分組的第一個(gè)字符*/
if?(is_first?==?1)????
ch?=?getchar();
else
ch?=?*wei;
for?(i?=?0;?(i? {
arr[i]?=?ch;
ch?=?getchar();
}
*wei?=?ch;??//最后獲取到的字符準(zhǔn)備作為下一分組的第一個(gè)字符
for?(i?=?i;?i? arr[i]?=?‘a(chǎn)‘;??//輸入不夠一組個(gè)數(shù)的整數(shù)倍則補(bǔ)‘a(chǎn)‘(即為補(bǔ)零)
if?(ch?==?‘\n‘)??//接收到回車符返回0,否則為1
return?0;
else
return?1;
}

/*加密函數(shù)*/
void?jiami(char?*arr?int?k?int?e?int?n)
{
int?m?=?0c=1?i?jt=0?shutempnum=0;
int?*array;
/*Mi賦值過(guò)程*/
for?(i?=?0;?i? {
temp?=?1;
for?(j?=?0;?j? temp?=?temp?*?10;
shu?=?(int)arr[i]?-?97;
m?=?m?+?temp?*?shu;
}
temp?=?e;
/*獲取e的二進(jìn)制表達(dá)形式的位數(shù)*/
do{
temp?=?temp?/?2;
num++;
}?while?(temp?!=?0);
array?=?(int?*)malloc(sizeof(int)*k);???//申請(qǐng)動(dòng)態(tài)數(shù)組
temp?=?e;
/*動(dòng)態(tài)數(shù)組存儲(chǔ)e的二進(jìn)制表達(dá)形式*/
for?(i?=?0;?i? {
array[i]?=?temp?%?2;
temp?=?temp?/?2;
}
/*避免出現(xiàn)天文數(shù)字的算法,詳情見(jiàn)上文文字說(shuō)明*/
for?(i?=?num?-?1;?i?>=?0;?i--)
{
t?=?t?*?2;
temp?=?c*c;
if?(temp?>?n)
{
for?(j?=?0;?temp?-?n*j?>=?0;?j++);
j--;
c?=?temp?-?n*j;
}
else
c?=?temp;
if?(array[i]?==?1)
{
t?=?t?+?1;
temp?=?c*m;
if?(temp?>?n)
{
for?(j?=?0;?temp?-?n*j?>=?0;?j++);
j--;
c?=?temp?-?n*j;
}
else
c?=?temp;
}

e?=?e?/?2;
}
temp?=?c;
i?=?0;
/*c的位數(shù)小于分組長(zhǎng)度則在前補(bǔ)零*/
do{
temp?=?temp?/?10;
i++;
}?while?(temp?!=?0);
for?(i;?i? printf(“0“);
printf(“%d“?c);
}

/*獲取分組的長(zhǎng)度*/
int?long_n(int?n)
{
int?tempijkshicomp=0;
temp?=?n;
/*獲取n的位數(shù)*/
for?(i?=?1;?temp?/?10?!=?0;?i++)
{
temp?=?temp?/?10;
}
temp?=?i;
/*若n的位數(shù)為基數(shù)*/
if?(i?%?2?!=?0)
{
i?=?i?-?1;
return?i;
}
/*若位數(shù)為偶數(shù)*/
else
{
for?(j?=?0;?j? {
shi?=?1;
for?(k?=?0;?k? shi?=?shi?*?10;
comp?=?comp?+?shi?*?25;
temp?=?temp?-?2;
}
if?(comp?<=?n)
return?i;
else
{
i?=?i?-?2;
return?i;
}
}
}

/*主函數(shù)*/
int?main()
{
int?p?q?e?d?n?fai_n?k?iis_first=1;
char?ch*arrwei=‘a(chǎn)‘;
printf(“請(qǐng)輸入p、q、e值,用空格間隔開(kāi)\n“);
scanf_s(“%d%d%d“?&p?&q?&e);??//從鍵盤獲取p、q、e值
n?=?p*q;??
fai_n?=?(p-1)*(q-1);???//Φ(n)
for?(k?=?0;?(k*n?+?1)?%?e?!=?0;?k++);
if?((k*n?+?1)?%?e?==?0)
d?=?(k*n?+?1)?/?e;??//d?*?e?≡?1?(mod?Φ(n))
k?=?long_n(n);
k?=?k?/?2;??//分組的長(zhǎng)度
ch?=?getchar();?//緩沖回車符
arr?=?(char?*)malloc(sizeof(char)*k);??//申請(qǐng)動(dòng)態(tài)數(shù)組
printf(“請(qǐng)輸入明文\n“);
????while?(1)
{
i=shuru(arrk&weiis_first);??//調(diào)用輸入字符的函數(shù),接收到回車符返回0,否則為1
is_first?=?0;??//第一分組錄入結(jié)束設(shè)為0
jiami(arrken);??//調(diào)用加密函數(shù)
if?(i?==?0)??//接收到返回值為0跳出循環(huán)
break;
}
printf(“\n“);
return?0;
}

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????3332??2018-06-10?10:51??RSA.c

評(píng)論

共有 條評(píng)論