zoukankan      html  css  js  c++  java
  • Linux crypt函数的使用

    crypt函数用来加密,目前Linux平台上加密的方法大致有MD5, DES, 3 DES

    在RedHat平台上MD5和DES用的多一些。crypt函数的原形是:

    char *crypt(const char *key, const char *salt);

    key就是我们要传入的明文,salt是我们指定用来加密的密钥,返回值就是加密后的密文。

    关键就是这个密钥salt,这里通过我们的实验,发现:

    (1)salt这个字符串如果以$1$开头,以$结尾,那么这表示让crypt用MD5的方式加密,加密后出来的密文格式就是 $1$...$<密文正文> ,夹在$1$和$之间的字符串就是我们指定的密钥文字。这个密钥文字最多不能超过8个字符。

    在EasyCluster的一些安装配置脚本中,我们就是用了这种加密方式,取出本机的MAC地址,然后用我们定义好的一个密钥加密,加密完成后 将密文中$1$...$这部分去掉,只保留后面的密文在license文件中,这样别人就不知道我们用什么密钥进行了加密,就算知道我们是针对MAC地址 加密的,但是由于不知道密钥是什么,所以还是安全的。(当然,破解者可以看我们验证license的汇编代码,一样能看到,HOHO)

    (2)如果salt字符串不是(1)方式的格式,那默认就用DES加密方法。DES加密时,salt只能取两个字符,也就是说,salt最多不能 超过2个字符,多出的字符会被丢弃。(SuSE上的3 DES不清楚是怎么一个约定),用DES加密出来的密文前两个字符就是密钥。后面紧跟着的就是真正的密文。


    在使用crypt函数的时候,在代码的开头,要定义这个常量:

    #define _XOPEN_SOURCE

    具体可以看man 3 crypt,这个常量的含义,在APUE第二章讲的很清楚。如果不定义这个常量,在有些Linux上没问题,但是在有些Linux上,就会出现crypt返回空指针的错误
     

  • 相关阅读:
    遥控按键上报键值映射问题
    AutoLock类
    Mutex互斥锁
    c++ 字符串和数字转换时的特殊处理
    pytorch实现MLP并在MNIST数据集上验证
    python实现直方图均衡化,理想高通滤波与高斯低通滤波
    python实现贝叶斯网络的概率推导(Probabilistic Inference)
    python+opencv实现车牌定位
    python添加高斯噪声和椒盐噪声,实现中值滤波和均值滤波,实现Roberts算子和Sobel算子
    c++学习笔记_6
  • 原文地址:https://www.cnblogs.com/super119/p/2005591.html
Copyright © 2011-2022 走看看