
运行环境:Microsoft Visual Studio 60
语言:C++
#include<stdioh>
#include<string>
void decrypt(char cipher[]);///////////////////////////////解密过程函数,根据输入密钥再一次生成密钥流
void main()
{
printf("RC4加解密程\n");
char choose1,choose2;
do{
int s[256],t[256];
char k[256];/////////////////用户输入的密钥
char plaintext[1024],ciphertext[1024];
printf("输入密钥:\n");
gets(k);
for(int i=0;i<256;i++)//////////////给字节状态矢量和可变长的密钥数组赋值
{
s[i]=i;
t[i]=k[i%strlen(k)];
}
int j=0;
for(i=0;i<256;i++) //////使用可变长的密钥数组初始化字节状态矢量数组s
{
int temp;
j=(j+s[i]+t[i])%256;
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
printf("\n输入要加密的字符串:\n");
gets(plaintext);
int m,n,key[256],q;
m=n=0;
printf("\n得到密文:\n");
for(i=0;i<strlen(plaintext);i++)/////////////由字节状态矢量数组变换生成密钥流并对明文字符进行加密
{
int temp;
m=(m+1)% 256;
n=(n+s[n])% 256;
temp=s[m];
s[m]=s[n];
s[n]=temp;
q=(s[m]+s[n])%256;
key[i]=s[q];
ciphertext[i]=plaintext[i]^key[i];
printf("%c",ciphertext[i]);
}
ciphertext[i]='\0';
//解密
printf("\n是否对上面的密文进行解密?(y/n)\n");
scanf("%c",&choose2);
getchar();
while(choose2=='y'||choose2=='Y')
{
decrypt(ciphertext);///////////////////////////////解密过程函数
choose2='n';
}
printf("\n是否希望继续使用程序?(y/n)\n");
scanf("%c",&choose1);
getchar();
}
while(choose1=='y'||choose1=='Y');
printf("\n程序结束");
system("pause");
}
//解密函数,密钥流的生成与加密相同
void decrypt(char cipher[])
{
int s[256],t[256];
int i;
char k[256];/////////////////用户输入的密钥
char plaintext[1024];
printf("\n输入密钥:\n");
gets(k);
for(i=0;i<256;i++)//////////////给字节状态矢量和可变长的密钥数组赋值
{
s[i]=i;
t[i]=k[i%strlen(k)];
}
int j=0;
for(i=0;i<256;i++) //////使用可变长的密钥数组初始化字节状态矢量数组s
{
int temp;
j=(j+s[i]+t[i])%256;
temp=s[i];
s[i]=s[j];
s[j]=temp;
}
int m,n,key[256],q;
m=n=0;
printf("\n解密后所得到明文是:\n");
for(i=0;i<strlen(cipher);i++)/////////////由字节状态矢量数组变换生成密钥流并对密文字符进行解密
{
int temp;
m=(m+1)% 256;
n=(n+s[n])% 256;
temp=s[m];
s[m]=s[n];
s[n]=temp;
q=(s[m]+s[n])%256;
key[i]=s[q];
plaintext[i]=cipher[i]^key[i];
printf("%c",plaintext[i]);
}
printf("\n");
}
char ch;
scanf(" %c",&ch);
printf("%c %c\n",(char)(ch-1),(char)(ch+1));
printf("%d %d\n",(ch-1),(ch+1));
PLC加密的方式:
通过编程软件将密码(明文)同程序文件一起写入PLC中。在用编程软件连接PLC时,提示输入密码,然后PLC返回实际密码,在编程软件内部实现密码的比较。此种加密方法在写入PLC中的密码没用经过任何加密计算。比较容易破解!
通过编程软件将密码同程序文件一起写入PLC中。写入PLC的密码(密文)在编程软件内部经过一定的加密计算(大都是简单的加密算法)。在用编 程软件连接PLC时,提示输入密码,然后PLC返回密文密码,在编程软件内部实现密文的比较。此种加密方法,破解有一定的难度!需要跟踪分析编程程序,找 出加密算法。
通过编程软件将密码明文同程序文件一起写入PLC中,由PLC对密码明文进行加密计算出密文存储在PLC内部。在用编程软件连接PLC时,提示 输入密码,PLC不用返回密文,在PLC内部实现密文的比较。这种加密方式也不易实现,需要PLC硬件及PLC *** 作系统支持。此种加密方式最难破解。
PLC的解密方式:
直接监视通讯口,找出明文密码。
监视通讯口、跟踪编程软件,找出密码明文与密文的关系(算法)。
目前没有十分有效的方法。
各种破解需要一定的技巧及经验、相关软件,真正的高手不屑于此。写此篇文章的目的不是要教大家如何破解,只是看不惯某些专业收费破解PLC密码的人,提醒PLC厂家提高密码的保密强度。
艾驰商城是国内最专业的MRO工业品网购平台,正品现货、优势价格、迅捷配送,是一站式采购的工业品商城!具有10年工业用品电子商务领域研 究,以强大的信息通道建设的优势,以及依托线下贸易交易市场在工业用品行业上游供应链的整合能力,为广大的用户提供了传感器、图尔克传感器、变频器、断路 器、继电器、PLC、工控机、仪器仪表、气缸、五金工具、伺服电机、劳保用品等一系列自动化的工控产品
以上就是关于可以给我一个用RC4加密明文的例子吗 谢谢啊全部的内容,包括:可以给我一个用RC4加密明文的例子吗 谢谢啊、c语言程序设计题 试编写一个加密程序,加密的方法是将明文的字母变成其后的第四个字母,字母表首尾相连、施耐德plc程序加密怎么破解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)