C++ 加密和解密ASCII表的一部分

C++ 加密和解密ASCII表的一部分,c++,c,rot13,C++,C,Rot13,我已经做了一个小的加密程序,用来加密密钥rot7和rot13。除了两个6个字母的uvwxyz外,一切正常 如果我输入ABCDEFGHIJKLMNOPQRSTUVWXYZ,它的加密和解密没有问题。但是,如果我输入相同的小写字母,则uvwxyz不起作用 说到这里,我允许ascii表中的所有可写字符作为有效范围,如下所示: // allow all writable characters from 32 to 255 if ((str[i] >= 32 ) && (str[i]

我已经做了一个小的加密程序,用来加密密钥rot7和rot13。除了两个6个字母的uvwxyz外,一切正常

如果我输入ABCDEFGHIJKLMNOPQRSTUVWXYZ,它的加密和解密没有问题。但是,如果我输入相同的小写字母,则uvwxyz不起作用

说到这里,我允许ascii表中的所有可写字符作为有效范围,如下所示:

// allow all writable characters from 32 to 255
if ((str[i] >= 32 ) && (str[i] <=255))
{
    str[i] -= key;
}
//允许32到255之间的所有可写字符
如果代码中的((str[i]>=32)和(&(str[i]):

    if ((str[i] >= 32) && (str[i] <= 255))
        {
           if (str[i] + key > 255)
               str[i] = ((str[i] + key) % 255 )+ 32;
           else
               str[i] += key;
        }
if((str[i]>=32)和&(str[i]255)
str[i]=((str[i]+键)%255)+32;
其他的
str[i]+=键;
}
如果
key
的值为13且
str[i]
为'u'或更大,
str[i]
的值大于255

您应该使用模
%
运算符。在这种情况下,这是旋转,而不仅仅是代码中的移位:

    if ((str[i] >= 32) && (str[i] <= 255))
        {
           if (str[i] + key > 255)
               str[i] = ((str[i] + key) % 255 )+ 32;
           else
               str[i] += key;
        }
if((str[i]>=32)和&(str[i]255)
str[i]=((str[i]+键)%255)+32;
其他的
str[i]+=键;
}
如果
key
的值为13且
str[i]
为'u'或更大,
str[i]
的值大于255


你应该使用模
%
运算符在这种情况下,这是旋转,不仅仅是移位,你能告诉我们它不起作用吗?当然可以,我要编辑并放置一个captureUm,我的意思是只给我们显示完整的代码和它给你的输出。当然我也可以添加代码…@sftrabbit你来了…解密是一样的重新设置密钥。你能告诉我们它不起作用吗?当然可以。我要编辑并设置一个captureUm,我的意思是只向我们显示完整的代码和它提供给你的输出。当然我也可以添加代码…@sftrabbit你来了…解密是一样的,只是反转密钥。类似这样的东西?范围str[I]=(str[I]+密钥)%character\u range;255+32。尝试写入字符串的值,以便您自己观察。顺便说一句,作为int。您必须测试值的总和,因为只有在大于255的情况下,您才必须有32。类似这样的内容?range str[i]=(str[i]+key)%character\u range;255+32。尝试写入字符串的值,以便您可以自己观察。顺便说一句,作为int。您必须测试值的总和,因为只有在大于255的情况下,您才必须有32。