内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

C++編寫Python擴(kuò)展(密碼生成器)

簡介

在最近的開發(fā)中,遇到了一個問題,發(fā)現(xiàn)Python沒有一個生成指定復(fù)雜度密碼的模塊(反正我沒有找到),需要自己寫一段生成隨機(jī)數(shù)的代碼來生成密碼,因此我就用C++自己寫的一個擴(kuò)展模塊。

龍城ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

模塊的要求:

  • 必須同時包含大寫小寫和數(shù)字
  • 可以傳遞參數(shù)設(shè)置密碼長度

上面的要求可以自己定制,比如說加上特殊字符,都是可以的,只要稍稍修改下代碼即可。

源碼

頭文件

//
// Created by lanyulei on 18-9-27.
//

#ifndef GENERATEPASSWORD_GENERATEPASSWORD_H
#define GENERATEPASSWORD_GENERATEPASSWORD_H

#include <iostream>
#include <string>
#include <time.h>
#include <boost/python.hpp> 

using namespace boost::python;

class GeneratePassword{
public:
    GeneratePassword(int length);
    std::string getPassword();
private:
    int m_intLength;
};

#endif //GENERATEPASSWORD_GENERATEPASSWORD_H

源文件

//
// Created by lanyulei on 18-9-27.
//

#include "GeneratePassword.h"

using namespace std;

// 判斷密碼復(fù)雜度是否符合要求
bool judgment(const string& passowrdValue, int length) {
    int Pcount = 0;
    int pcount = 0;
    int numberCount = 0;
    for (int i=0; i<length; i++)    {
        if (isupper(passowrdValue[i])) {
            Pcount++;
        } else if (islower(passowrdValue[i])) {
            pcount++;
        } else if (isdigit(passowrdValue[i])) {
            numberCount++;
        }
    }

    if (Pcount && pcount && numberCount) {
        return true;
    } else {
        return false;
    }
}

// 構(gòu)造函數(shù),設(shè)置密碼生成位數(shù)
GeneratePassword::GeneratePassword(int length):m_intLength(length){}

// 生成密碼,并且返回
string GeneratePassword::getPassword() {
    char chr[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
                  'A', 'B', 'C', 'D', 'E', 'F', 'G',
                  'H', 'I', 'J', 'K', 'L', 'M', 'N',
                  'O', 'P', 'Q', 'R', 'S', 'T', 'U',
                  'V', 'W', 'X', 'Y', 'Z',
                  'a', 'b', 'c', 'd', 'e', 'f', 'g',
                  'h', 'i', 'j', 'k', 'l', 'm', 'n',
                  'o', 'p', 'q', 'r', 's', 't', 'u',
                  'v', 'w', 'x', 'y', 'z'
    };
    string strResult;
    int gcounts = 0;
    while (gcounts < 10) {
        if (judgment(strResult, m_intLength)) {
            break;
        } else {
            strResult.clear();
            char buf[10] = {0};
            for (int i=0; i<m_intLength; i++)   {
                int idx = rand()%62;
                sprintf(buf, "%c", chr[idx]);
                strResult.append(buf);
            }
        }
        gcounts++;
    }

    return strResult;

}

// 生成Python可調(diào)用的動態(tài)鏈接庫
BOOST_PYTHON_MODULE(gpassword){
    class_<GeneratePassword>
      ("gpassword", init<int>())
      .def("getPassword", &GeneratePassword::getPassword);
}

編譯命令

# python3
g++ -shared -o helloworld.so -fPIC -I/usr/include/python3.6m/ helloworld.cpp -lpython3.6m -lboost_python3

# python2
g++ -shared -o helloworld.so -fPIC -I/usr/include/python2.7/ helloworld.cpp -lpython -lboost_python

效果展示

In [2]: import gpassword

In [3]: gp = gpassword.gpassword(18)  // 實(shí)例化,并且設(shè)置生成多少位的密碼

In [4]: gp.getPassword()  // 生成密碼
Out[4]: 'fa37JncCHryDsbzayy'

寫的有點(diǎn)low,如有好的意見請不吝賜教,非常感謝。

文章名稱:C++編寫Python擴(kuò)展(密碼生成器)
轉(zhuǎn)載來于:http://www.rwnh.cn/article34/ghcgse.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、軟件開發(fā)、網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
舞阳县| 昌江| 屯留县| 漠河县| 安阳县| 滦平县| 炎陵县| 岗巴县| 津南区| 两当县| 延长县| 唐河县| 视频| 茌平县| 江口县| 博野县| 三门县| 许昌市| 锡林郭勒盟| 道孚县| 南江县| 呼和浩特市| 来安县| 板桥市| 织金县| 伊金霍洛旗| 旺苍县| 互助| 庆阳市| 新密市| 南漳县| 太谷县| 鄂尔多斯市| 乌恰县| 雅安市| 周宁县| 泽州县| 临湘市| 房产| 普洱| 五莲县|