首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换算法

替换算法
EN

Stack Overflow用户
提问于 2011-02-25 07:07:11
回答 2查看 1K关注 0票数 2

如何用C#代码在ASP.NET中实现替换加密算法?

请务必向我提供示例代码语法...

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-13 23:12:49

实际上,ROT13是Caesar cipher的变体,它的思想是将纯文本的字母在字母表中再移动N个位置。ROT13和凯撒密码都不安全。为什么?

基本上,可以将加密强度定义为破解给定加密文本所需的工作量。那么我们应该怎么做才能打破这些呢?

  • ROT13 ->我们只需将字母表中的每个字符向后移动13个位置。(完全没有安全性)。
  • Caesar cipher ->

for N=1 to 26 do:

shift each character by N positions back in the alphabet.

If a lot of common English words (the, and, that,...) - encryption is cracked.

所以在Caesar的情况下,破解加密文本的迭代次数仍然是26次,所以我们可以安全地断言,Caesar密码也没有安全性。(当然,它比ROT13好一点)。

如果你想要一个更有用的替换密码--那就使用Vigenere cipher。与ROT13/Caesar密码不同,维吉尼亚密码在加密操作中不使用固定字母表。(它通过按要求的顺序切换来使用几个字母表)。这就是Vigenere比ROT13/Caesar更安全的原因。尽管如此,Vigenere仍然是弱加密的,可以与XOR encryption相媲美。为什么维吉内尔很弱?基本上是因为它容易受到Frequency analysis的攻击(当然,首先需要猜测/找到密钥长度)。这里是vigenere C# code (连同Caesar/ROT13)。

祝好运!

票数 0
EN

Stack Overflow用户

发布于 2011-02-25 07:13:43

代码语言:javascript
复制
StringBuilder encryptedBuilder = new Stringbuilder();

for(int i = 0; i < key.Length; i++) {
    char e = getCharFor(key[i]); // this does substitution - implement this
    encryptedBuilder.Append(e);
}

string encryptedString = encryptedBuilder.ToString();
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5111691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档