我正在编写一个程序,以这种方式加密一个给定的字符串:
如果我们有一个整数V和一个只有元音的数组v={a,e,I,o,u}如果字符串的字母是一个元音,那么用它前面V个位置的元音替换它,只考虑元音的数组(不是整个字母表!).
要明确:
String: "uuuu" and V:2 -----> String_out: "iiii"
String: "aaaa" and V:2 -----> String_out: "oooo"
String: "iiii" and V:2 -----> String_out: "aaaa"
所以为了解决我的问题,我写了:
V=2;
char vow[5]={'a','e','i','o','u'};
for(i=0;i<strlen(s);i++){
flag=0;
for(j=0;j<5 && flag==0;j++){
if(*(s+i)==vow[j]){
flag=1;
}
if(flag)
*(s+i)=vow[j-V%5];
}
代码采用字符串的每个元素来验证它是否是元音,然后如果它是元音,则将字符串的考虑元素替换为 V 位置之前的元音。
如果字符串只有元音 i,o,u,则此代码有效,但如果它有 a,e,则输出将是错误的: 问题
char vow[5]={'a','e','i','o','u'};
j=1 // it will happen if the string is "eeee" in fact corresponds to 'e' in vow
V=2
vow[j-V%5]=... // j-V%5 is a negative number!!!!
那么,我该如何解决字母a和e的问题,这样我就不会在vow中得到负数了...]并正确遵守加密规则?如果有不清楚的地方请告诉我,提前感谢!!!
我假设对于a和e,你应该回绕,所以a-
改变这个
j-V%5
到
((j-V%5) + 5) % 5
实例
V=2, j=1
j-V%5 ---------------> -1
(j-V%5) + 5 ---------> 4
((j-V%5) + 5) % 5 ---> 4
Result:
'e' --> 'u'
如果字符串只有元音 i,o,u,则此代码有效,但如果它有 a,e,则输出将是错误的:
>
这是因为当元音是a
或e
时,j-V%5
是负数(因为,j是0
或者1
),正如您正确提到的。
//when j=0 i.e, vowel `a`
j-V%5 = 0-(2%5) = -2 //`%` has more priority over `-`
//when j=1 i.e, vowel `e`
j-V%5 = 1-(2%5) = -1
只需使用(5j-(V%5))%5
即可避免誓言[]
数组的索引值为负值
//when j=0 i.e, vowel `a`
(5+j- (V%5))%5 = (5+0-(2%5))%5 = 3
//when j=1 i.e, vowel `e`
(5+j- (V%5))%5 = (5+1-(2%5))%5 = 4
//when j=2 i.e, vowel `i`
(5+j- (V%5))%5 = (5+2-(2%5))%5 = 0
//when j=3 i.e, vowel `o`
(5+j- (V%5))%5 = (5+3-(2%5))%5 = 1
//when j=4 i.e, vowel `u`
(5+j- (V%5))%5 = (5+4-(2%5))%5 = 2
这将有助于避免誓言[]
数组的负索引
还有一种方法是,
V1.1.1新增 <?php $string='666666'; $string=sp_authencode($string);//加密字符串 echo $string;//输出加密后的字符串 ?>
问题内容: 我在我的iPhone应用程序中使用Objective C中的加密类,但是我在努力通过Android应用程序在JAVA中使用相同的功能。我的加密代码如下: 我试图在JAVA中复制它,但是当我编码相同的数据时却得到了不同的字符串。所以我做错了事,但我无法弄清楚。这是我的JAVA代码: 谁能看到我要去哪里错了? 根据以下注释,我添加了getBytes,但是生成的字符串仍然不同: 问题答案:
我感兴趣的是构建一个个人使用的小应用程序,它将使用JavaScript在客户端加密和解密信息。加密的信息将存储在服务器上的数据库中,但不会存储解密的版本。 它不一定要是超级duper安全的,但我想使用一个当前未中断的算法。 理想情况下我可以做一些 生成编码字符串,以及类似于 以后再解码。 到目前为止,我已经看到了以下内容:http://bitwiseshiftleft.github.io/sjcl
这是正确的吗?可以说“它是加密的”吗?我的期望是得到像“werwerwer”这样的字面字符串
我得到的输出是: 有人能解释一下是怎么回事吗?我在互联网上看到了很多这样的例子,它们看起来都很好。但在这里,文本没有被解密。 ps:我使用的版本是
问题内容: 我是密码学的新手。我希望学习如何在文件中加密和解密文本……当我在net中引用相关文章时。我怀疑对同一文本进行多次加密后,单个文本的加密文本是否会相同?谁能解决我的疑问? 问题答案: 这是使用该类的示例: