亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? password.c

?? linux下完成任意文件的AES加密. 口令可變,加密穩定迅速.
?? C
字號:
/* *  AES Crypt for Linux *  Copyright (C) 2007, 2008 * *  Contributors: *      Glenn Washburn <crass@berlios.de> *      Paul E. Jones <paulej@packetizer.com> *      Mauro Gilardi <galvao.m@gmail.com> * * This software is licensed as "freeware."  Permission to distribute * this software in source and binary forms is hereby granted without a * fee.  THIS SOFTWARE IS PROVIDED 'AS IS' AND WITHOUT ANY EXPRESSED OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * THE AUTHOR SHALL NOT BE HELD LIABLE FOR ANY DAMAGES RESULTING FROM * THE USE OF THIS SOFTWARE, EITHER DIRECTLY OR INDIRECTLY, INCLUDING, * BUT NOT LIMITED TO, LOSS OF DATA OR DATA BEING RENDERED INACCURATE. * */#include <stdio.h>#include <string.h>#include <sys/types.h>#include <fcntl.h>#include <unistd.h> // getopt#include <stdlib.h> // malloc#include <iconv.h> // iconv stuff#include <langinfo.h> // nl_langinfo#include <errno.h> // errno#include <termios.h> // tcgetattr,tcsetattr#include "password.h"/* *  read_password_error * *  Returns the description of the error when reading the password. */const char* read_password_error(error){    if (error == AESCRYPT_READPWD_FOPEN)        return "fopen()";    if (error == AESCRYPT_READPWD_FILENO)        return "fileno()";    if (error == AESCRYPT_READPWD_TCGETATTR)        return "tcgetattr()";    if (error == AESCRYPT_READPWD_TCSETATTR)        return "tcsetattr()";    if (error == AESCRYPT_READPWD_FGETC)        return "fgetc()";    if (error == AESCRYPT_READPWD_TOOLONG)        return "password too long";    if (error == AESCRYPT_READPWD_NOMATCH)        return "passwords don't match";    return "No valid error code specified!!!";}/* *  read_password * *  This function reads at most 'MAX_PASSWD_LEN'-1 characters *  from the TTY with echo disabled, putting them in 'buffer'. *  'buffer' MUST BE ALREADY ALLOCATED!!! *  When mode is ENC the function requests password confirmation. * *  Return value: *    >= 0 the password length (0 if empty password is in input) *    < 0 error (return value indicating the specific error) */int read_password(char* buffer, encryptmode_t mode){    struct termios t;                   // Used to set ECHO attribute    int echo_enabled;                   // Was echo enabled?    int tty;                            // File descriptor for tty    FILE* ftty;                         // File for tty    char pwd_confirm[MAX_PASSWD_LEN+1]; // Used for password confirmation    int c;                              // Character read from input    int chars_read;                     // Chars read from input    char* p;                            // Password buffer pointer    int i;                              // Loop counter    int match;                          // Do the two passwords match?    // Open the tty    ftty = fopen("/dev/tty", "r+");    if (ftty == NULL)    {        return AESCRYPT_READPWD_FOPEN;    }    tty = fileno(ftty);    if (tty < 0)    {        return AESCRYPT_READPWD_FILENO;    }     // Get the tty attrs    if (tcgetattr(tty, &t) < 0)    {        fclose(ftty);        return AESCRYPT_READPWD_TCGETATTR;    }    // Round 1 - Read the password into buffer    // (If encoding) Round 2 - read password 2 for confirmation    for (i = 0; (i == 0) || (i == 1 && mode == ENC); i++)    {        // Choose the buffer where to put the password        if (!i)        {            p = buffer;        }        else        {            p = pwd_confirm;        }        // Prompt for password        if (i)        {            fprintf(ftty, "Re-");        }        fprintf(ftty, "Enter password: ");        fflush(ftty);        // Disable echo if necessary        if (t.c_lflag & ECHO)        {            t.c_lflag &= ~ECHO;            if (tcsetattr(tty, TCSANOW, &t) < 0)            {                // For security reasons, erase the password                memset(buffer, 0, MAX_PASSWD_LEN+1);                memset(pwd_confirm, 0, MAX_PASSWD_LEN+1);                fclose(ftty);                return AESCRYPT_READPWD_TCSETATTR;            }            echo_enabled = 1;        }        else        {            echo_enabled = 0;        }        // Read from input and fill buffer till MAX_PASSWD_LEN chars are read        chars_read = 0;        while (((c = fgetc(ftty)) != '\n') && (c != EOF))        {            // fill buffer till MAX_PASSWD_LEN            if (chars_read <= MAX_PASSWD_LEN)                p[chars_read] = (char) c;            chars_read++;        }        if (chars_read <= MAX_PASSWD_LEN+1)            p[chars_read] = '\0';        fprintf(ftty, "\n");        // Enable echo if disabled above        if (echo_enabled)        {            t.c_lflag |= ECHO;            if (tcsetattr(tty, TCSANOW, &t) < 0)            {                // For security reasons, erase the password                memset(buffer, 0, MAX_PASSWD_LEN+1);                memset(pwd_confirm, 0, MAX_PASSWD_LEN+1);                fclose(ftty);                return AESCRYPT_READPWD_TCSETATTR;            }        }        // check for EOF error        if (c == EOF)        {            // For security reasons, erase the password            memset(buffer, 0, MAX_PASSWD_LEN+1);            memset(pwd_confirm, 0, MAX_PASSWD_LEN+1);            fclose(ftty);            return AESCRYPT_READPWD_FGETC;        }        // Check chars_read.  The password must be maximum MAX_PASSWD_LEN        // chars.  If too long an error is returned        if (chars_read > MAX_PASSWD_LEN)        {            // For security reasons, erase the password            memset(buffer, 0, MAX_PASSWD_LEN+1);            memset(pwd_confirm, 0, MAX_PASSWD_LEN+1);            fclose(ftty);            return AESCRYPT_READPWD_TOOLONG;        }    }    // Close the tty    fclose(ftty);    // Password must be compared only when encrypting    if (mode == ENC)    {        // Check if passwords match        match = strcmp(buffer, pwd_confirm);        memset(pwd_confirm, 0, MAX_PASSWD_LEN+1);        if (match != 0)        {            // For security reasons, erase the password            memset(buffer, 0, MAX_PASSWD_LEN+1);            return AESCRYPT_READPWD_NOMATCH;        }    }    return chars_read;}/* *  passwd_to_utf16 * *  Convert String to UTF-16LE for windows compatibility */int passwd_to_utf16(char *in_passwd,                    int length,                    int max_length,                    char *out_passwd){    char *ic_outbuf,         *ic_inbuf;    iconv_t condesc;    size_t ic_inbytesleft,           ic_outbytesleft;    ic_inbuf = in_passwd;    ic_inbytesleft = length;    ic_outbytesleft = max_length;    ic_outbuf = out_passwd;    if ((condesc = iconv_open("UTF-16LE", nl_langinfo(CODESET))) ==        (iconv_t)(-1))    {        perror("Error in iconv_open");        return -1;    }    if (iconv(condesc, &ic_inbuf, &ic_inbytesleft, &ic_outbuf, &ic_outbytesleft) == -1)    {        switch (errno)        {            case E2BIG:                fprintf(stderr, "Error: password too long\n");                iconv_close(condesc);                return -1;                break;            default:                //~ printf("EILSEQ(%d), EINVAL(%d), %d\n", EILSEQ, EINVAL, errno);                fprintf(stderr,                        "Error: Invalid or incomplete multibyte sequence\n");                iconv_close(condesc);                return -1;        }    }    iconv_close(condesc);    return (max_length - ic_outbytesleft);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美色一区| 久久久精品一品道一区| 日韩欧美一区二区免费| 国产精品夫妻自拍| 久久精品国产**网站演员| 99精品1区2区| 久久久精品国产免大香伊| 日韩激情一二三区| 色激情天天射综合网| 国产亚洲成年网址在线观看| 日韩av不卡一区二区| 色一区在线观看| 国产女主播视频一区二区| 免费一级欧美片在线观看| 欧美三级韩国三级日本三斤| 中文字幕在线一区| 国产一二精品视频| 日韩欧美一级片| 免费成人结看片| 日韩一区二区影院| 日韩在线a电影| 欧美一级高清大全免费观看| 亚洲v精品v日韩v欧美v专区| 色综合 综合色| 亚洲另类中文字| 色综合欧美在线视频区| 日韩伦理电影网| 91美女视频网站| 一区二区视频免费在线观看| 成人h动漫精品| 亚洲四区在线观看| 91在线观看免费视频| 亚洲欧美一区二区不卡| av中文字幕在线不卡| 亚洲女与黑人做爰| 欧美性欧美巨大黑白大战| 亚洲黄色在线视频| 欧美日韩一级片在线观看| 亚洲一区二区三区四区五区黄| 色综合久久88色综合天天免费| 亚洲欧美日韩久久| 欧美亚洲国产一卡| 日本欧洲一区二区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 色偷偷一区二区三区| 亚洲欧美日韩久久| 欧美精品在线观看播放| 麻豆视频一区二区| 国产清纯美女被跳蛋高潮一区二区久久w | 日韩有码一区二区三区| 日韩欧美国产综合在线一区二区三区| 免费一级片91| 国产欧美一区二区在线| 色天天综合色天天久久| 日韩精品国产欧美| 国产亚洲精品精华液| 色婷婷狠狠综合| 蜜臀99久久精品久久久久久软件 | 欧美三日本三级三级在线播放| 亚洲成av人影院| 久久久久久久久久久99999| 91色九色蝌蚪| 美女国产一区二区| 亚洲精品中文在线| 亚洲精品一线二线三线| 97久久精品人人做人人爽| 天天色 色综合| 国产精品免费视频观看| 在线成人av网站| 波多野结衣一区二区三区| 天天综合色天天| 亚洲三级理论片| 日韩一区二区三区免费看| 成人av在线网| 麻豆精品视频在线观看视频| 日韩美女啊v在线免费观看| 日韩精品一区二区三区四区视频 | 亚洲自拍都市欧美小说| 久久久久亚洲蜜桃| 欧美日韩激情一区二区三区| 国产精品一区二区在线播放 | 亚洲一区二区综合| 精品久久久久一区二区国产| 色菇凉天天综合网| 国产裸体歌舞团一区二区| 午夜精品久久久久久久99樱桃| 国产欧美精品国产国产专区| 日韩欧美在线网站| 欧美日韩黄色影视| 91激情在线视频| 成人精品国产一区二区4080| 视频一区视频二区在线观看| 亚洲色图制服诱惑| 国产欧美日本一区二区三区| 欧美成人性战久久| 欧美日韩国产综合视频在线观看| 粉嫩aⅴ一区二区三区四区| 精品一区二区三区免费毛片爱| 亚洲成人综合在线| 亚洲人成在线观看一区二区| 国产人久久人人人人爽| 精品国产乱码久久久久久夜甘婷婷| 欧美午夜寂寞影院| 在线免费视频一区二区| 99视频一区二区三区| 成人99免费视频| 国产成人免费网站| 国产大片一区二区| 韩国av一区二区三区在线观看| 美女国产一区二区| 国产一区二区不卡| 成人永久看片免费视频天堂| 成人免费不卡视频| jlzzjlzz亚洲女人18| 成人av免费观看| 成人国产精品视频| 91影院在线免费观看| 在线亚洲免费视频| 欧美疯狂性受xxxxx喷水图片| 欧美伦理电影网| 欧美一区二区三区在线| 精品福利二区三区| 国产农村妇女毛片精品久久麻豆 | 色婷婷久久久综合中文字幕| 色综合天天性综合| 欧美性大战久久久久久久蜜臀| 欧美色爱综合网| 欧美变态口味重另类| 久久蜜桃av一区二区天堂 | 精品奇米国产一区二区三区| 精品国产污污免费网站入口| 精品国产123| 中文字幕一区二区三区在线不卡| 中文字幕一区二区三区四区不卡| 亚洲精品欧美综合四区| 丝袜美腿成人在线| 国产成人av在线影院| 91毛片在线观看| 91精品国产综合久久香蕉的特点| 欧美videos大乳护士334| 欧美激情一区三区| 亚洲一区二区中文在线| 精品一区二区影视| 91在线你懂得| 精品免费一区二区三区| 国产精品嫩草99a| 日韩电影在线免费看| 国产不卡视频在线观看| 欧美日韩一区中文字幕| 亚洲精品一区二区三区99| 亚洲男同性视频| 精品无人码麻豆乱码1区2区 | 日韩一区二区影院| 中文字幕一区二区三区乱码在线 | 一区二区三区久久| 久久国产精品露脸对白| 91在线视频18| 久久蜜桃av一区二区天堂| 亚洲第四色夜色| 不卡视频在线看| 欧美videos中文字幕| 亚洲欧美日韩综合aⅴ视频| 久久99久久久久久久久久久| 99re在线视频这里只有精品| 91精品国产福利| 国产精品的网站| 狠狠色丁香久久婷婷综| 欧美三级资源在线| 最新日韩在线视频| 国产成人日日夜夜| 精品久久久久香蕉网| 亚洲二区视频在线| 91视频com| 欧美激情一区二区| 韩国毛片一区二区三区| 欧美区在线观看| 亚洲在线视频网站| 99精品国产99久久久久久白柏| 久久精品欧美日韩| 极品少妇一区二区三区精品视频| 欧美影院一区二区三区| 亚洲欧美日韩国产手机在线 | 亚洲精品成a人| 成人视屏免费看| 国产午夜精品一区二区三区嫩草| 日韩精品电影在线观看| 欧美人牲a欧美精品| 亚洲国产精品精华液网站| 一本一本大道香蕉久在线精品| 亚洲国产激情av| 成人妖精视频yjsp地址| 欧美精品一区二区三区在线播放 | 色狠狠色噜噜噜综合网| 亚洲婷婷国产精品电影人久久| 国产传媒一区在线| 国产亚洲精品超碰| av男人天堂一区| 中文字幕中文在线不卡住| 成人开心网精品视频| 国产精品灌醉下药二区|