一、crypt函数

#define _XOPEN_SOURCE /* See feature_test_macros(7) */ 
#include <unistd.h > 
char *crypt(const char *key, const char *salt);

二、函数说明

crypt是个密码加密函数,它是基于Data Encryption Standard(DES)演算法。crypt只适用于密码的使用,不适合用于资料加密。

crypt()将参数key所指的字符串加以加密,key字符串长度仅取前8个字符,超过此长度的字符没有意义。

参数salt为两个字符组成的字符串,由a-z、A-Z、0-9,“.”和“/”所组成,用来决定使用4096 (a-z、A-Z、0-9,“.”和“/”共64个字符,64的平方为4096)种不同内建表格的哪一个。函数执行成功后会返回指向编码过的字符串指针,参数key所指的字符串不会有所更动。

无论输入是什么,输出的都是长度为13个字符的字符串。
编码过的字符串长度为13 个字符,前两个字符为参数salt代表的字符串。

三、返回值

返回一个指向以NULL结尾的密码字符串。

注意:编译时要在末尾添加-lcrypt选项。

四、实例

#include <stdio.h>
#include <string.h>
#include <unistd.h>
int main()
{char password[13];char *key;char slat[2];key = getpass("Input first password:");slat[0] = key[0];slat[1] = key[1];strcpy(password,crypt(key,slat));key = getpass("Input second password:");slat[0] = password[0];  //取加密之后的字符串的第一个字符slat[1] = password[1];  //取加密之后的字符串的第二个字符printf("After crypt(),1st password:%s\n",password);printf("After crypt(),2st password:%s\n",crypt(key,slat));return 0;
}

两次输入的密码一致,会发现加密之后的结果是一样的。

说明:编码过的字符串的前两个字符为参数salt代表的字符串。

Linux深度解析 crypt 加密相关推荐

  1. random and password 在Linux下生成crypt加密密码的方法,shell 生成指定范围随机数与随机字符串...

    openssl rand -hex n (n is number of characters) LANG=c < /dev/urandom tr -dc _A-Z-a-z-0-9 | head ...

  2. 在Linux下生成crypt加密密码

    [摘要]当我们用红帽Kickstart脚本或useradd或其他方式写东西的时候,经常会需要用到crypt命令加密生成的密码格式.那么,有没有其他方式可以生成这种格式的密码?事实上,方法有很多 1.我 ...

  3. 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一第1章 C语言与内存1.1 引言...

    本节书摘来自异步社区<嵌入式Linux与物联网软件开发--C语言内核深度解析>一书中的第1章,第1.1节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区"华章计算机&quo ...

  4. 《嵌入式Linux与物联网软件开发——C语言内核深度解析》一2.4 位运算构建特定二进制数...

    本节书摘来自异步社区<嵌入式Linux与物联网软件开发--C语言内核深度解析>一书中的第2章,第2.4节,作者朱有鹏 , 张先凤,更多章节内容可以访问云栖社区"异步社区" ...

  5. 图文深度解析Linux内存碎片整理实现机制以及源码

    图文深度解析Linux内存碎片整理实现机制以及源码. 物理内存是以页为单位进行管理的,每个内存页大小默认是4K(大页除外).申请物理内存时,一般都是按顺序分配的,但释放内存的行为是随机的.随着系统运行 ...

  6. php怎么魔方加密,深度解析php混淆加密解密的手段,希望对大家解读魔方加密有所帮助 [tihuan]...

    深度解析php混淆加密解密的手段,希望对大家解读魔方加密有所帮助 [tihuan] 2018-12-31 php做为一门当下非常流行的web语言,常常看到有人求解密php文件,想当年的asp也是一样. ...

  7. Linux tty1密码,Linux 无法从本地字符界面(tty1-tty6)登陆深度解析

    Linux 无法从本地字符界面(tty1-tty6)登陆深度解析 作者:吴伟龙(PrudentWoo) 问题描述: 每次装完Oracle数据库之后,本地的tty1-tty6就无法登陆,只能通过vtty ...

  8. Linux正则表达式多个条件并,linux 正则表达式深度解析

    简介 大体来讲,正则表达式的文法分为3种标准:BRE.ERE 和 ARE.其中 BER 和 ERE 属于 POSIX 标准,ARE 则是由各家定义的扩展. POSIX 正则表达式 传统上,POSIX ...

  9. 嵌入式Linux与物联网软件开发:C语言内核深度解析

    嵌入式Linux与物联网软件开发:C语言内核深度解析     1.C语言与内存         1.引言         2.计算机程序运行的目的         3.位.半字.字的概念和内存位宽   ...

最新文章

  1. 百亿估值的Databricks,到底是做什么的?
  2. C# 在异步中使用HttpWebRequest出现的“正在终止线程”错误的解决方案
  3. 搜索引擎solr系列---多字段匹配的实现方法
  4. 搜索引擎ElasticSearchV5.4.2系列一之ES介绍
  5. matlab中find()函数用法
  6. osgi java_使普通的旧Java OSGi兼容
  7. 真正的动态声明性组件
  8. php识别地址,实现地址自动识别实例(PHP)
  9. php内容管理器是什么原因,有什么好的php内容管理后台吗?打算试水接单的大三狗提问...
  10. java 中 如何sum 乘法_java 加法 乘法问题
  11. OPPO发布小布虚拟人,开放面向开发者的多元AI能力
  12. 时间轮(TimingWheel)
  13. 计算机二级C语言题型分值占比+考试要求+考试内容
  14. python中如何打开文件选择框
  15. 重装mysql_重装MySQL步骤详解
  16. 【数学 进阶】初等数论 学习笔记
  17. invalid alteration of datatype(varchar2转化clob)
  18. 解决ssh过程中报Too many authentication failures
  19. 程序猿爱上了经济学《经济学原理》
  20. 2012年1月11日

热门文章

  1. 外星人全家桶性能体验 — Navis
  2. 命令模式--把需求记录在案,让事务灵活可变(行为模式02)
  3. android获取context的方法,Android编程获取全局Context的方法
  4. Ubuntu无法远程连接
  5. 6.2神经网络算法实现--python机器学习
  6. 论文阅读:Question Answering Over Temporal Knowledge Graphs
  7. AngularJs使用ng-repeat实现数据循环展示的效果
  8. mysql连续打卡次数_MySQL打卡学习(第四次)
  9. SLAM前端:PnP(一)DLS、P3P
  10. C盘空间不够 mklink解决VScode扩展迁移到其他盘