加密程序的另一个用法

 本人喜爱搜集一些经典之作,僻如软件,电影,音乐之类。我没有电脑,只有一个1G的MP4。当然,现

在它已经快超载了。所以我十分关注压缩方法,显然WINRAR还不能满足我的需求。
  我知道在压缩方案中有这么一条:XXXXX -> X5 ,即用原文的数据单元加上单元数量的方法来表示几

个相邻的数据单元。
  在我的一篇文章中提到过一种加密方法,在这个方法中,即使原文由不相同的几个字符组成,它们的

密文也可能是相同的字符(当然,这种情况不常见)。
  如此,我便把一个文件先用WINRAR压缩,压缩后再用我的那个加密程序加密一次,然后再用WINRAR

压缩密文,看能否提高压缩率。
  我试了好几个文件,都没有成功。但有两个效果十分明显,有一个比原来的RAR文件少了大约10%,而

另一个RAR文件原本有400多M,按那种方法操作后变成了200多M.
    总之,这次尝试不算成功,也不算失败.下一步,我认为要做的便是如何能找到一个合适的密码,为RAR文件提

供更大的压缩空间.

   到最后我又想到了一个想法:  将加密与压缩的顺序调一下,即加密->压缩->加密->压缩,不知结果又如何.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你好,我是C知道,很高兴能为你提供帮助。 以下是一个简单的加密程序的代码,它使用了Caesar Cipher加密算法,可以将输入的字符串按照指定的偏移量进行加密: ```python def encrypt(text, offset): result = "" for i in range(len(text)): char = text[i] if char.isupper(): result += chr((ord(char) + offset - 65) % 26 + 65) elif char.islower(): result += chr((ord(char) + offset - 97) % 26 + 97) else: result += char return result ``` 这个函数接收两个参数:要加密的文本字符串和偏移量。偏移量是一个整数,表示每个字符要向右移动的位数。例如,如果偏移量是2,那么字母A将被加密为C,字母B将被加密为D,以此类推。 为了使用这个函数,你可以调用它并传递要加密的文本和偏移量,例如: ```python text = "hello, world!" offset = 3 encrypted_text = encrypt(text, offset) print(encrypted_text) ``` 这将输出加密后的字符串:"khoor, zruog!"。 请注意,这只是一个简单的加密算法,不适用于安全加密。如果需要更安全的加密算法,请使用专业的加密库。 ### 回答2: 当然可以帮你写一个简单的加密程序。以下是一个使用C语言编写的基本示例: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> void encrypt(char *str, int key) { int len = strlen(str); for (int i = 0; i < len; i++) { if (str[i] >= 'a' && str[i] <= 'z') { str[i] = (str[i] - 'a' + key) % 26 + 'a'; } else if (str[i] >= 'A' && str[i] <= 'Z') { str[i] = (str[i] - 'A' + key) % 26 + 'A'; } } } int main() { char str[100]; int key; printf("请输入要加密的文本:"); fgets(str, sizeof(str), stdin); printf("请输入密钥(1-25之间的整数):"); scanf("%d", &key); encrypt(str, key); printf("加密后的文本为:%s\n", str); return 0; } ``` 以上段代码实现了一个简单的加密程序。它通过输入一个字符串和密钥,将字符串中的字母按照密钥进行移位加密。其中,小写字母保持在小写字母范围内,大写字母保持在大写字母范围内。 请注意,上述代码仅提供了一种简单的加密示例,并不具备强大的加密功能。在实际场景中,为了保证数据安全,通常需要使用更加复杂和安全的加密算法。 ### 回答3: 当然可以为您写一个简单的C语言加密程序。 下面是一个示例程序,它使用了Caesar加密算法,该算法以一个固定的偏移量对输入的字符进行替换。偏移量可以在程序中进行调整。 ```C #include <stdio.h> void encrypt(char *message, int key) { char ch; int i; for(i = 0; message[i] != '\0'; ++i){ ch = message[i]; if(ch >= 'a' && ch <= 'z'){ ch = ch + key; if(ch > 'z'){ ch = ch - 'z' + '`'; } message[i] = ch; } else if(ch >= 'A' && ch <= 'Z'){ ch = ch + key; if(ch > 'Z'){ ch = ch - 'Z' + '@'; } message[i] = ch; } } } int main() { char message[100]; int key; printf("请输入要加密的消息:"); gets(message); printf("请输入加密的偏移量:"); scanf("%d", &key); encrypt(message, key); printf("加密后的消息为: %s", message); return 0; } ``` 以上程序要求用户输入一个加密的消息以及一个偏移量。然后,程序通过调用encrypt函数对消息进行加密,并将结果打印出来。 请注意,上述示例程序只是一个简单的示例,它使用了Caesar加密算法,该算法并不是一种强大的加密方法。如果您需要更高安全性的加密算法,建议使用现成的加密库或算法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值