首页
社区
课程
招聘
[旧帖] 求一个简单的算法 0.00雪花
发表于: 2014-6-4 15:20 6995

[旧帖] 求一个简单的算法 0.00雪花

2014-6-4 15:20
6995
正在开发一个软件,需要 对字符串进行加密,字符串内容有汉字字母和数字中英文标点符号回车换行等各种符号。
我的思路是 先将 字符串进行 一次位运算加密
,然后再进行base64加密,
然后对base64 的结果 再进行另一个位运算加密

解密原理同上

但是我在实际位运算中 经常会出现 将一个字符 经过位运算后变成了'\0' 字符
字符变成了'\0'就意味着 字符串的结束。导致来解密后文本残缺不全。

求大神给个好用的位运算算法,不会将任何一个字符 变为 '\0'

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (23)
雪    币: 413
活跃值: (637)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
在加密文本前前加长度。
再定义一下小算法。
2014-6-4 16:10
0
雪    币: 37
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
为何不转换成二进制文件再进行加密呢?
2014-6-4 16:25
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
不要用char之類的讀,改用int 去做運算
當然要記錄總共有幾個元素
2014-6-5 12:50
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
推荐一个加密方案
原文 ->des加密 ->base64编码->密文
密文->生成md5  (数字签名用)
md5放在密文前面。

具体的des加密代码网上可以搜到, 是基于二进制的, 不会存在你说的中文等各种问题。
2014-6-5 13:58
0
雪    币: 32
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
des为对称加密算法,有扩展版本3des等, 建议查阅。
base64 算不得加密, 只能是编码, 二进制和字符之间的转换
2014-6-5 14:01
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
base64编码后就是可见字符了,位运算出来的结果出现不可见字符是很正常的,不要用字符去做,以byte流的方式做位运算应该就没问题了
2014-6-5 14:55
0
雪    币: 183
活跃值: (52)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
8
存储字符串起始指针和字符串长度。

大概想了想,如果起始字符串没有'\0',算法设计时把'\0'映射到'\0'就行。
可以选择异或一个固定值,比如0x23,如果异或加密之后是0,变成0x23,如果是0x23,变成0.
解密同样即可。
2014-6-10 11:10
0
雪    币: 1
活跃值: (38)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
进来学习学习
2014-6-11 15:17
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
1.可以自己打乱base64码表
2.base64编码之后不要再进行运算,否则又会出现不可见字符
2014-6-11 20:59
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
进来学习技术词汇的走过。。。
2014-7-9 02:28
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
位运算结果 | 0x01
2014-7-9 11:29
0
雪    币: 69
活跃值: (242)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
wmg
13
每次移位的位数应该至少为 sizeof(WCHAR) * 8bit 的倍数应该就不会出现‘\0'了
2014-7-9 22:43
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
先转成二进制,在用你自己的算法去加密
2014-7-10 13:00
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
随机生成密匙,与之进行异或运算
2014-7-12 17:39
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
新手暂时飘过!
2014-7-13 15:18
0
雪    币: 31
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
用utf-8编码字串试下
2014-7-13 16:43
0
雪    币: 36
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
这个不太懂,我觉得可以自己乱定义一个,别人反正不知道你咋加密的
2014-7-15 15:12
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
运MD5
进行加密,
2014-9-25 00:27
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
不太懂,求指导
2014-9-25 08:52
0
雪    币: 46
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
加密方式分2大类:分组加密,序列加密
首先你要选择哪种加密方式,分组密码容易破解。序列加密的内容随机性很强,因此理论上比分组密码要更安全。

建议不要使用字符进行加密。
一般是以二进制文件形式以bit来进行加密.

简单加密可以取或 与  反等按位的逻辑运行

复杂加密方式 DES, rsa, 椭圆曲线加密,混沌密码等就很复杂了
2014-11-3 23:29
0
雪    币: 18
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
楼主你是只需要字符串加密么?这还不简单,比如1说下面的
ABCDEFG\0
长度为7,你用7与原来每个字符做xor就可以了,还原也简单1,没人知道你加密后的是啥意思
2014-11-4 05:52
0
雪    币: 47
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
字符串文本结尾00不能动,动了会出错
2014-11-11 12:34
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
24
正解
2014-11-13 12:13
0
游客
登录 | 注册 方可回帖
返回
//