简介:
这几天在我们 vc驿站- www.cctry.com 上面看到一位网友发了一篇关于加密IPv4字符串的提问帖子,被我看到了。
帖子地址: http://www.cctry.com/thread-238356-1-1.html
简单与楼主沟通了之后,了解了加密的原理,感觉还不错,简单实用。于是就用C语言实现了这个加密的算法,有加密就得有解密,于是顺便也把解密的算法给写出来了,这里面跟大家分享下。将这个 IP 地址加密之后可以应用与很多方面,比如大家都感兴趣的远控编程,将主控端的IP地址进行加密等等,大家也来学习下吧!
算法原理:
该算法有个加密与解密的表格,如下:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 s t u v w x y z a b c d e f g
1 t u v w x y z a b c d e f g h
2 u v w x y z a b c d e f g h i
3 v w x y z a b c d e f g h i j
4 w x y z a b c d e f g h i j k
5 m n o p q r s t u v w x y z a
6 n o p q r s t u v w x y z a b
7 o p q r s t u v w x y z a b c
8 p q r s t u v w x y z a b c d
9 q r s t u v w x y z a b c d e
. r s t u v w x y z a b c d e f
整理成表格如下:
////////////////////////////////////////////////////////////////////////////////
// 备注:本篇文章来自 vc驿站: http://www.cctry.com
// C、C++、VC++ 各种学习资源,免费教程,期待您的加入!
/////////////////////////////////////////////////////////////////////////////////
大家可以看看,也就是说该表格是个二维的数组,总共有11行、15列。为什么有11行呢,因为在IPv4中,所有能出现的字符也就是0123456789这么十格数字,再加上一个“.”符号,所以就是11行了,那么为什么又是15列呢?因为在IPv4中最长的IP字符串就是15位,例如:192.168.105.123,算上“.”符号也就是15位的长度,所以总共是15列。好了,关于这个表格就讲解到这里吧,下面说说如何用这个表格去加密IPv4的字符串。
这里举个例子,比如要加密的IPv4的地址为:192.168.105.123,我们一位一位的来取字符。 IP地址中每个字符的字面值代表行,他在IP地址字符串中的位置代表列 。按照这个理论去加密IP地址的字符串就可以了。
比如IP地址中第一个字符为'1',他的字面值就是1,所以我们定位到表格的第一行也就是这行:1 t u v w x y z a b c d e f g h,他在IP地址字符串中的位置是0(字符串的位置从0开始),所以我们直接取出表格第一行的第0列,即:字符't',所以'1'加密后的结果就是't'。
接着来,IP地址中第二个字符为'9',他的字面值就是9,所以我们定位到表格的第九行也就是这行:9 q r s t u v w x y z a b c d e,他在IP地址字符串中的位置是1(字符串的位置从0开始),所以我们直接取出表格第九行的第1列,即:字符'r',所以'9'加密后的结果就是'r'。
再来,IP地址中第三个字符为'2',他的字面值就是2,所以我们定位到表格的第二行也就是这行:2 u v w x y z a b c d e f g h i,他在IP地址字符串中的位置是2(字符串的位置从0开始),所以我们直接取出表格第二行的第2列,即:字符'w',所以'2'加密后的结果就是'w'。
再来,IP地址中第四个字符为'.',他的字面值就是'.',所以我们定位到表格的最后一行也就是这行:. r s t u v w x y z a b c d e f,他在IP地址字符串中的位置是3(字符串的位置从0开始),所以我们直接取出表格最后一行的第3列,即:字符'u',所以'.'加密后的结果就是'u'。
以此类推,大家应该明白了吧,加密原理明白了,接下来的工作就是用C语言的代码实现出来了,应该不难吧。同理加密原理明白了,那么再写个解密的算法也不成问题,反过来就OK了。
好了,废话不多说了,直接奉上C语言版的加密算法,时间比较仓促,写的不好还请大家拍砖。
////////////////////////////////////////////////////////////////////////////////
// 备注:本篇文章来自 vc驿站: http://www.cctry.com
// C、C++、VC++ 各种学习资源,免费教程,期待您的加入!
/////////////////////////////////////////////////////////////////////////////////
代码如下:
这几天在我们 vc驿站- www.cctry.com 上面看到一位网友发了一篇关于加密IPv4字符串的提问帖子,被我看到了。
帖子地址: http://www.cctry.com/thread-238356-1-1.html
简单与楼主沟通了之后,了解了加密的原理,感觉还不错,简单实用。于是就用C语言实现了这个加密的算法,有加密就得有解密,于是顺便也把解密的算法给写出来了,这里面跟大家分享下。将这个 IP 地址加密之后可以应用与很多方面,比如大家都感兴趣的远控编程,将主控端的IP地址进行加密等等,大家也来学习下吧!
算法原理:
该算法有个加密与解密的表格,如下:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 s t u v w x y z a b c d e f g
1 t u v w x y z a b c d e f g h
2 u v w x y z a b c d e f g h i
3 v w x y z a b c d e f g h i j
4 w x y z a b c d e f g h i j k
5 m n o p q r s t u v w x y z a
6 n o p q r s t u v w x y z a b
7 o p q r s t u v w x y z a b c
8 p q r s t u v w x y z a b c d
9 q r s t u v w x y z a b c d e
. r s t u v w x y z a b c d e f
整理成表格如下:
////////////////////////////////////////////////////////////////////////////////
// 备注:本篇文章来自 vc驿站: http://www.cctry.com
// C、C++、VC++ 各种学习资源,免费教程,期待您的加入!
/////////////////////////////////////////////////////////////////////////////////
大家可以看看,也就是说该表格是个二维的数组,总共有11行、15列。为什么有11行呢,因为在IPv4中,所有能出现的字符也就是0123456789这么十格数字,再加上一个“.”符号,所以就是11行了,那么为什么又是15列呢?因为在IPv4中最长的IP字符串就是15位,例如:192.168.105.123,算上“.”符号也就是15位的长度,所以总共是15列。好了,关于这个表格就讲解到这里吧,下面说说如何用这个表格去加密IPv4的字符串。
这里举个例子,比如要加密的IPv4的地址为:192.168.105.123,我们一位一位的来取字符。 IP地址中每个字符的字面值代表行,他在IP地址字符串中的位置代表列 。按照这个理论去加密IP地址的字符串就可以了。
比如IP地址中第一个字符为'1',他的字面值就是1,所以我们定位到表格的第一行也就是这行:1 t u v w x y z a b c d e f g h,他在IP地址字符串中的位置是0(字符串的位置从0开始),所以我们直接取出表格第一行的第0列,即:字符't',所以'1'加密后的结果就是't'。
接着来,IP地址中第二个字符为'9',他的字面值就是9,所以我们定位到表格的第九行也就是这行:9 q r s t u v w x y z a b c d e,他在IP地址字符串中的位置是1(字符串的位置从0开始),所以我们直接取出表格第九行的第1列,即:字符'r',所以'9'加密后的结果就是'r'。
再来,IP地址中第三个字符为'2',他的字面值就是2,所以我们定位到表格的第二行也就是这行:2 u v w x y z a b c d e f g h i,他在IP地址字符串中的位置是2(字符串的位置从0开始),所以我们直接取出表格第二行的第2列,即:字符'w',所以'2'加密后的结果就是'w'。
再来,IP地址中第四个字符为'.',他的字面值就是'.',所以我们定位到表格的最后一行也就是这行:. r s t u v w x y z a b c d e f,他在IP地址字符串中的位置是3(字符串的位置从0开始),所以我们直接取出表格最后一行的第3列,即:字符'u',所以'.'加密后的结果就是'u'。
以此类推,大家应该明白了吧,加密原理明白了,接下来的工作就是用C语言的代码实现出来了,应该不难吧。同理加密原理明白了,那么再写个解密的算法也不成问题,反过来就OK了。
好了,废话不多说了,直接奉上C语言版的加密算法,时间比较仓促,写的不好还请大家拍砖。
////////////////////////////////////////////////////////////////////////////////
// 备注:本篇文章来自 vc驿站: http://www.cctry.com
// C、C++、VC++ 各种学习资源,免费教程,期待您的加入!
/////////////////////////////////////////////////////////////////////////////////
代码如下: