String 加密算法澄清

String 加密算法澄清,string,algorithm,math,encryption,cryptography,String,Algorithm,Math,Encryption,Cryptography,我正在尝试为我的个人项目创建加密程序和解析器。 假设我对拉丁字母表加密如下: a=a b=ab c=aab .. z=a…ab 在这种情况下,字符串“aaab”可以通过多种方式解密: ac,aab 但如果我对alhabet加密如下: a=a b=ab c=abb .. z=a…bb 在这种情况下,任何字符串都可以用唯一的方式解密 是否有一个算法或定理来描述这种行为?这是正确的加密还是对于很长的字符串,我可能会以某种方式获得歧义。您正在寻找代码 唯一可解码代码的一个示例是代码。也就是说,没有两个字

我正在尝试为我的个人项目创建加密程序和解析器。
假设我对拉丁字母表加密如下:

a=a
b=ab
c=aab
..
z=a…ab

在这种情况下,字符串“aaab”可以通过多种方式解密:
ac,aab

但如果我对alhabet加密如下:

a=a
b=ab
c=abb
..
z=a…bb

在这种情况下,任何字符串都可以用唯一的方式解密


是否有一个算法或定理来描述这种行为?这是正确的加密还是对于很长的字符串,我可能会以某种方式获得歧义。

您正在寻找代码

唯一可解码代码的一个示例是代码。也就是说,没有两个字符
A
B
,因此
encode(A)
encode(B)
的前缀。这相对容易检查

如果您的代码没有前缀,它可以很容易地被解码:您只需获取编码字符串中与某个字符对应的唯一前缀。例如,是一个用于压缩的无前缀代码的流行示例

反之则不然,因为您的第二个代码不是无前缀的,但仍然是唯一可解码的。有一些算法可以检查代码是否是唯一可解码的(例如),但我不知道有任何漂亮的重新格式化。唯一可解码代码的一个要求是,但它也适用于非唯一可解码代码(例如,您的第一个代码)。

您正在寻找代码

唯一可解码代码的一个示例是代码。也就是说,没有两个字符
A
B
,因此
encode(A)
encode(B)
的前缀。这相对容易检查

如果您的代码没有前缀,它可以很容易地被解码:您只需获取编码字符串中与某个字符对应的唯一前缀。例如,是一个用于压缩的无前缀代码的流行示例


反之则不然,因为您的第二个代码不是无前缀的,但仍然是唯一可解码的。有一些算法可以检查代码是否是唯一可解码的(例如),但我不知道有任何漂亮的重新格式化。唯一可解码代码的一个要求是,但它也适用于非唯一可解码代码(例如,您的第一个代码)。

这可能更适合您参考经典密码的属性,而不是现代加密。你的问题更多的是关于加密网站的主题。现代的加密技术已经远远超过了这样的结构。谢谢@harold,你能给出一个答案吗?请回答“这是正确的加密吗”:除了不可接受的非紧凑性之外,这个“加密”在一秒钟内就被破解了。这可能更适合你指的是经典密码的特性,而不是现代加密。你的问题更多的是关于加密网站的主题。现代加密已经远远超过了这种结构。谢谢@harold,你能给出一个答案吗?请“这是一个正确的加密吗”:除了不可接受的非紧凑性之外,这种“加密”在一秒钟内就被破解了。但在这里,a是ab的前缀,ab是abb的前缀。是吗?@EduardRostomyan是的:
a,ab,abb,
code不是无前缀的,但它仍然是唯一可解码的。因此,如果我在第一个例子中将a=a更改为a=b,它将是无前缀的,并且是唯一可解释的?但在这里,a是ab的前缀,ab是abb的前缀。是吗?@EduardRostomyan没错:
a,ab,abb,
code不是无前缀的,但它仍然是唯一可解码的。所以,如果我在第一个例子中将a=a更改为a=b,它将是无前缀的,并且是唯一可解的?