C语言代码和运行结果如下:
输出符合示例,加解密均正确,望采纳~
附源码链接:字符串加解密
首先,要对这个常量字符串进行加密。
然后,加密用的密码(密钥)需要进行特殊处理。
比如:要保护字符串123456,用密钥13579进行加密。
密钥13579的16进制数组形式为:{0x31, 0x33, 0x35, 0x37, 0x39, 0x00}
你可以对这个数组进行数据干扰。比如:高位乱填数据(因为你知道是3),低位都加/减某数值:
变为了:{ 0xA3, 0xF5, 0x67, 0xD9, 0x3A, 0x00 }
你在代码中对每一位进行恢复:
*p = 0x0F, *p |= 0x30, *p -= 0x02,如此得到你的原始密码:13579;
反汇编看到的你的密钥串为:0xA3, 0xF5, 0x67, 0xD9, 0x3A, 0x00。
不知道你思路的话,只能碰运气猜啦。
在上面两种干扰方法基础上,你甚至还可以把高低位调换,这样就又加了一层干扰信息。
别人想破解也得好好猜一会了。
#includestdio.h
#includestdlib.h
#includestring.h
int main(void)
{
char c[100];
int k;
int len,i,temp;
scanf("%s",c);
scanf("%d",k);
len = (int)strlen(c);
k = k%26;
for(i=0;ilen;i++)
{
if (c[i] = 'a' c[i] = 'z')
{
if(c[i]+k 'z')
{
temp = 'z'-c[i];
temp = k - temp - 1;
c[i]='a'+temp;
}
else
{
c[i]+=k;
}
}
else if (c[i] = 'A' c[i] = 'Z')
{
if(c[i]+k 'Z')
{
temp = 'Z'-c[i];
temp = k - temp - 1;
c[i]='A'+temp;
}
else
{
c[i]+=k;
}
}
else
{
/* do nothing */
}
}
printf("%s\n",c);
return 0;
}
对于字符串的加密解密,可以给String类扩展方法,方便使用
Swift中使用3DES/sha1/MD5加密解密算法 必须要引入这个库 - 在桥接文件中
#import CommonCrypto/CommonCrypto.h
3DES的加密是可逆的, sha1和MD5的是不可逆的
使用方法:
直接在xib界面拖一个textFiled的控件,然后放置3个按钮,分别是进行MD5、sha1、3DES加密点击方法,然后分别测试加密解密数据
可以参考文章
使用这个第三方来实现 JKEncrypt
** 。**
编码: 将计算机中的字符串按照一定的顺序表示成二进制数据的过程
各国字符编码都不一样:
1、计算机- 表示[英文字母、数字、部分特殊符号]- ascii编码 [0~256]
2、万国码,统一字符编码[号称可以统一全球范围内任何语言的表示方式]
任何语言中的任何数据,都可以使用一个字符来表示 unicode编码
3、中国有GB2312- GBK - GB18030
4、数据传输编码:unicode transfer format 8 bit [UTF-8]
python中的编码解码:
要命的规则:字符串的编码解码,一直都是任何语言中一个难点和重点
任何字符串-都是由字节组成的!
python3中:字符:(str);字节(bytes)
字符-字节:encode 编码:将一个字符串编码成计算机可以操作的二进制数据
字节-字符:decode 解码:将一个二进制数据按照指定的编码~解码成自然数据
什么是加密: 将一个明文数据,按照指定的算法,运算得到一个其他的可以隐藏真实信息的密文数据,这个过程称为加密;处理的算法称为加密算法;用到的关键数据称为密钥
什么是解密: 按照指定的算法和关键数据,将一个密文数据进行逆向运算得到正确的明文数据的过程成为解密操作
(1)、单向加密算法:只能加密,不能解密的算法
如:用户账号密码(单向加密)存储,此时任何人都不能查看该用户的明文密码
流程-用户输入明文密码-加密-和存储的密文密码进行比较-相等-成功
单向散列加密算法- MD5加密
单项哈希加密算法- SHAX加密
(2)、双向加密算法:可以加密,加密的数据可以解密得到明文数据
使用在更多的场景;数据进行加密传输-目标地址-解密得到明文数据进行处理
对称加密:加密和解密使用相同的秘钥;
非对称加密:加密和解密使用不同的秘钥;如HTTPS传输数据
hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法
注意: hashlib 加密啊的字符串类型为二进制编码,直接加密字符串会报如下错误:
有两种方式可以将字符串转化为二进制数据