1. C++ ASCII 加密
#include <stdio.h>
#include <string.h>
// 将十进制数decimal转换为k进制数,并以字符串形式存放在字符数组s中
char *CountRule(int decimal,int k,char *s) {
int ch,i,n;
for(n = 0; decimal > 0; ++n) {
s[n] = decimal%k + '0';
decimal /= k;
}
s[n] = '\0';
for(i = 0; i < n/2; ++i) {
ch = s[i];
s[i] = s[n - i - 1];
s[n - i - 1] = ch;
}
return s;
}
// 将k进制串转换为十进制数,并以整数返回
unsigned Transform(char s[], int k) {
int n = 1,j,len;
unsigned num = 0;
len = strlen(s);
for(j = len - 1;j >= 0; j--) {
num += n*(s[j] - '0');
n *= k;
}
return num;
}
unsigned char *Encrypt(unsigned char *plaintext,char *key,unsigned char *cryptogram) {
int i,j,klen,blen;
char ch,binarystr[9];
unsigned char *p = plaintext;
unsigned char *c = cryptogram;
klen = strlen(key);
for(i = 0; p[i]; ++i) {
c[i] = p[i] - (key[i%klen] - '0'); // 初步加密
CountRule(c[i],2,binarystr); // 将数值s[i]转换为二进制串
blen = strlen(binarystr);
if(blen < 8) {
for(j = blen; j >= 0; --j) // 如果binarystr不够8位,空位留前面
binarystr[j + 8 - blen] = binarystr[j];
for(j = 0; j < 8 - blen; ++j) // 然后在前面填入'0'
binarystr[j] = '0';
}
for(j = 0; j < 8; j += 2) { // 实施核心加密过程:交换相邻奇偶位
ch = binarystr[j];
binarystr[j] = binarystr[j + 1];
binarystr[j + 1] = ch;
}
c[i] = Transform(binarystr,2); // 再把串转回到整数
}
c[i] = '\0';
return (unsigned char *)c;
}
unsigned char *Decrypt(unsigned char *cryptogram,char *key,unsigned char *plaintext) {
int i,j,klen,blen;
char ch,binarystr[9];
unsigned char *c = cryptogram;
unsigned char *p = plaintext;
klen = strlen(key);
for(i = 0; c[i]; ++i) { // 核心解密
CountRule(c[i],2,binarystr); // 将数值s[i]转换为二进制串
blen = strlen(binarystr);
if(blen < 8) {
for(j = blen; j >= 0; --j) // 如果binarystr不够8位,空位留前面
binarystr[j + 8 - blen] = binarystr[j];
for(j = 0; j < 8 - blen; ++j) // 然后在前面填入'0'
binarystr[j] = '0';
}
for(j = 0; j < 8; j += 2) { // 实施核心解密过程:交换相邻奇偶位
ch = binarystr[j];
binarystr[j] = binarystr[j + 1];
binarystr[j + 1] = ch;
}
p[i] = Transform(binarystr,2); // 再把串转回为整数
p[i] += (key[i%klen] - '0'); // 再进行初解密
}
p[i] = '\0';
return (unsigned char *)p;
}
int main() {
unsigned char plaintext[] = "东海县文广体局";
unsigned char secret[80],pt[80];
char key[] = "1B01";
printf("明文 : %s\n",plaintext);
Encrypt(plaintext,key,secret);
printf("密文 : %s\n",secret);
Decrypt(secret,key,pt);
printf("明文 : %s\n",pt);
return 0;
}
2. 从键盘输入一个字符,对该字符进行加密处理输出,规则是将其转换为对应的ASCII码加2之后对应的字符
#include<stdio.h>
main(){
charch;
ch=getchar();
ch+=2;
putchar(ch);
}
3. 加密算法 1) 用被加密数据异或字母“D”的ASCII码。 2) 将步骤1)得到的数据异或字母“X”的ASCII码。
#include <stdio.h>
main()
{
unsigned char i;
i=1;//设要加密的数字=1(等于几都行)
i=i ^ 'D';
i^='X';
prinft("%d",i);
}
4. 数字加密成ASCII码,求大概算法
有很多种方法,最简单的是字典法,把你的数字按照字典对应到你的字符,比如0-^ 1-@ 2-t 3-y 4-T 5-u 6-o 7-O 8-p 9-s 这样 123就可以替换为@ty当然,这种方法过于简单,规律极易暴露,不过可以多备几套字典,比如序号 0123456789A! !wWdaS^$):w% 'Jh%^0_1@#....以序号区分,这样就可以将12341转换为A!wWdaw或者w%Jh%^J,应该说用起来还不错
5. C语言 输入字符串输出对应字母的ASCII编码 加密
#include<stdio.h>
#include<string.h>
char pass[101];
int main()
{
int i;
char s[101],key[101];
puts("设定密码:");
scanf("%s",pass);
puts("输入源字符串:");
scanf("%s",s);
puts("输入密码:");
scanf("%s",key);
while(strcmp(pass,key))
{
/*for(i=0;i<strlen(s);i++)
printf("%d ",s[i]+4);
puts("");*/
puts("密码错误!重新输入:");
scanf("%s",key);
}
puts(s);
for(i=0;i<strlen(s);i++)
printf("%d ",s[i]);
puts("");
}
6. Html文件中出现加密 我想知道这是何种形式的加密 是ASCII加密么 如果是怎么能给转换回正常的ASCII加密
解密函数就在此 mydata 找到这个看下就知道了
7. C语言实现将字符串进行加密处理,每个字符的加密规则是,将其转换为对应的ASCII码加3后对应 的字符输出
输入的是英文字符的话,直接加3就可以,但是如果是中文字符的话,如果直接高位和地位加3也可以,但是解密的时候就有一个不确定的存在,因为中文字符的ascii编码是有0xfe这样的存在,加上3的话就到时候还原就变得不确定。所以如果是中文字符加密的话,应该把两个ascii码转合并为两个字节无符号类型,然后再加3。
8. 输入一行数字加密后输出ASCII码 加密规则:先将数字对应的ASCII码-10,输出减10后数字对应的ASCII码
不回答。很抱歉,我想你最起码的也应该尝试一下自己去写出代码,哪怕有各种错误,至少努力了,也会通过改正这些错误得到更深的理解
9. 【急】加密规则:字符的ASCII码加上该字符在字母表中的次序,则字符串“iPad”加密后的十六进制表示是
C,查ASCII表得编号67,在字母表中的次序是3,相加得70,查ASCII表得编号为70的字符是F,对应的十六进制为46。
iPad:
i:105 + 9 = 114 密码r 十六进制72
P:80 + 16 = 96密码‘ 十六进制60
a:97 + 1 = 98密码b 十六进制62
d:100 + 4 = 104密码h 十六进制68
密码r’bh 十六进制72-60-62-68