Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 加密ip地址_Algorithm - Fatal编程技术网

Algorithm 加密ip地址

Algorithm 加密ip地址,algorithm,Algorithm,我需要加密ip地址。示例这是我的ip地址:78.172.16.193我需要将此地址转换为6个字符的单词。它可以包含整数或字符串。也应该是我可以解密的 我该怎么做?我在等你的建议 我将在NodeJS中使用它。我不想要代码,我想要一个算法。整数或字符串意味着您有26+26+10个字符可供选择。62项选择。这映射到6^62个可用字符串 有256^4个ip地址要表示 提出一些映射应该是相当简单的 您将无法轻松指定小数,因为您不能为它们浪费3个字符,并且仍然能够将4个节点压缩为3个字符。因此,您肯定需要将

我需要加密ip地址。示例这是我的ip地址:78.172.16.193我需要将此地址转换为6个字符的单词。它可以包含整数或字符串。也应该是我可以解密的

我该怎么做?我在等你的建议


我将在NodeJS中使用它。我不想要代码,我想要一个算法。

整数或字符串意味着您有26+26+10个字符可供选择。62项选择。这映射到6^62个可用字符串

有256^4个ip地址要表示

提出一些映射应该是相当简单的


您将无法轻松指定小数,因为您不能为它们浪费3个字符,并且仍然能够将4个节点压缩为3个字符。因此,您肯定需要将IP合并到一个块中,您似乎已经这样做了,但没有显示工作。

使用Base64。它被广泛使用,并且可能已经在您的目标框架上得到支持。正如基数10在一个字符中只允许10个可能的标志符号一样,基数64在每个字符中允许64个标志符号。要表示32位数字(如IP地址),您需要至少具有6个值的基64位数字

256 x 256 x 256 x 256        => ~4 billion
64 x 64 x 64 x 64 x 64       => ~1 billion  : 5 is not enough so lets use 6
64 x 64 x 64 x 64 x 64 x 64  => ~69 billion : it fits and there is still some headroom
此解决方案符合您的6个字符要求。但是,如果您放弃该要求,您可以简单地使用32位对称键对原始值进行异或运算。这很粗糙,但如果传输的数据中没有任何模式,就足以混淆IP地址,就像IP总是以192.168开头一样。它也容易受到全零或全一攻击

IP address    => 1100 0000 1010 1000 0000 0000 0000 0001 <= 192.168.0.1
symmetric key => 1011 1101 0101 1010 1011 1101 0101 1010 <= 189.90.189.90
xor result    => 0111 1101 1111 0010 1011 1101 0101 1011 <= 125.242.189.91

如果用同一个键再次对地址进行异或运算,则最终会再次返回原始地址。如您所见,第三个元素泄漏了密钥,因为xor只是简单地翻转位。

听起来像是家庭作业问题。让我们看看你试过的东西。此外,这是一个非常广泛的问题,所以如果你得到了答案,你可能不会得到你想要的答案。欢迎来到so!从我们最近遇到的所有问题来看,你可以把你的需求放在一个问题中,然后得到答案,但实际上你需要表现出努力。告诉我们你被困在哪里?为什么你的解决方案不起作用。结果如何。预期的结果是什么。你真的需要给我们更多的东西。你对加密了解多少?你知道如何编程吗?你会使用哪种语言?您可以简单地将四个八位字节转换为字符。这是加密的一种形式。在您喜爱的搜索引擎上搜索加密算法。这将是一个很好的开始。这不是一个家庭作业。我知道答案,但这是一个算法问题。我将在nodejs中使用它。我不想要你的代码,我只需要一个算法。为什么6个字符?这似乎是一个相当随意的数字。