精华内容
下载资源
问答
  • 这一篇文章主要是实现一个有界面的、简化版的RSA加密,学习非对称加密的基本原理和算法。工程的代码可以在这里下载:资源下载本文目录一、RSA算法的基本实现过程1.公钥/私钥对的生成(1)选择两个不同的素数(质数)p、q...

    这一篇文章主要是实现一个有界面的、简化版的RSA加密,学习非对称加密的基本原理和算法。

    工程的代码可以在这里下载:资源下载

    本文目录

    一、RSA算法的基本实现过程

    1.公钥/私钥对的生成

    (1)选择两个不同的素数(质数)p、q

    (2)计算它们的乘积n=p×q

    (3)计算欧拉函数Ф(n)=(p-1)(q-1)

    (4)选择与Ф(n)互素(互质),并且小于Ф(n)的整数e

    (5)计算d,使得d×e mod Ф(n) = 1

    2.加密和解密的计算

    (1)加密公式

    (2)解密公式

    (3)加密解密的迭代计算

    二、实验环境

    三、关键代码

    1.生成密钥对

    2.加密解密

    四、编译结果

    一、RSA算法的基本实现过程

    与对称加密算法中不同,RSA算法的密钥是成对的两个数值,称之为公钥/私钥对。而且,公钥/私钥对也不是随机生成的两个数值,他们之间必须符合某种特定的关系。

    目前网络使用的RSA算法的公钥/私钥长度可达1024bit,甚至2048bit。为简化计算起见,本次将减小密钥的长度,同时采用随机的方法产生密钥,以降低算法的复杂性。

    1.公钥/私钥对的生成

    生成公钥/密钥对的算法基本步骤如下:

    (1)选择两个不同的素数(质数)p、q

    此处,为了方便,将p、q限制为1000以内的素数。同时,为了达到p和q的随机性,先将1000以内的素数存放在一个数组中,然后生成两个随机数抽取其中的两个不同的素数。注意随机数要加上时间随机种子。

    (2)计算它们的乘积n=p×q

    (3)计算欧拉函数Ф(n)=(p-1)(q-1)

    (4)选择与Ф(n)互素(互质),并且小于Ф(n)的整数e

    此处的e也采用随机的方法产生。

    (5)计算d,使得d×e mod Ф(n) = 1

    令k=1,2,3,… 搜索直到使得(Ф(n)×k+1)能被e整除,计算d= Ф ( n ) × k + 1 e \frac{Ф(n)×k+1}{e}eФ(n)×k+1​ 。

    结果的密钥分别为公钥{e,n}和私钥{d,n}。

    2.加密和解密的计算

    以下的P代表明文(Plain)。C代表密文(Cipher)。

    (1)加密公式

    C=Pe mod n

    (2)解密公式

    P=Cd mod n

    (3)加密解密的迭代计算

    由于幂运算速度比较慢,在这里采用了下面的迭代公式等价替换了幂运算的操作。

    C=Pe mod n=(…(((P*P mod n)*P mod n)*P mod n)…)*P mod n(其中需要有e个P相乘)

    解密公式也是同理。

    二、实验环境

    软件:Qt Creator 3.3.0(Based on Qt 5.4.0)

    系统:Windows 10

    三、关键代码

    代码中的phi表示的是Ф(n)。

    1.生成密钥对

    bool isPrime(int num);//判断是否为素数

    int gcd(int a, int b);//求a、b的最大公约数

    int prime_num[168];//1000以内的素数

    int p,q,e,d,n,phi;

    long long plain,cipher;//明文和密文

    //生成1000以内的素数的数组

    int a = 0;

    for(int i=1;i<=1000;i++)

    {

    if(isPrime(i))

    {

    prime_num[a] = i;

    a++;

    }

    }

    //随机产生p、q并计算n和phi

    srand(time(NULL));

    p = prime_num[(rand()%168)];

    q = prime_num[(rand()%168)];

    n = p*q;

    phi = (p-1)*(q-1);

    //计算e

    do{

    e = (rand()%(phi-2))+2;

    }while(gcd(e,phi) != 1);

    //计算d

    for(int k=1;;k++)

    {

    if((phi*k+1)%e == 0)

    {

    d = (phi*k+1)/e;

    break;

    }

    }

    以下是辅助函数。

    bool isPrime(int num)

    {

    if(num == 1)

    return false;

    for(int i=2;i

    {

    if(num % i == 0)

    return false;

    }

    return true;

    }

    int gcd(int a, int b)

    {

    if(b==0)

    return a;

    else

    return gcd(b,a%b);

    }

    2.加密解密

    加密迭代计算

    cipher = plain;

    for(int i=1;i

    cipher = (cipher*plain)%n;

    解密迭代计算

    plain = cipher;

    for(int i=1;i

    plain = (plain*cipher)%n;

    四、编译结果

    先在窗口中点击“生成密钥”,然后再输入明文(注意明文的数字要小于n),最后加密明文。

    明文=1234,加密得密文为161619。

    ffc70122e35e1df2b6178d55bae1f415.png

    最后将上面获得的密文解密一下,来验证设计的算法的正确性。

    密文=161619,解密得到明文为1234,与上面相符,所以是正确的。

    3d697956cf267dc482fcae8391cde50d.png

    工程的代码可以在这里下载:资源下载

    展开全文
  • 基于QT的AES算法加密软件,可以在Windows和linux同时运行,适合毕业设计及学习使用,自己当年作业,贡献出来
  • LinuxQT4.8实现AES加密解密
  • linux加密解密初探

    2021-03-02 03:12:57
    encryptiondecryption加密是让数据从明文变成密文,传输过程中是密文,传送过去之后对方接收到的也是密文。可以理解为密文就是乱码,看不出内在的任何意义,通常也都是逐位对应的。在接收方接收到密文之后只有把它...
  • 软件是一款用QT写成的加密解密的软件,还有些界面的设计不够完善,请见谅。用户名与密码均是yuzhiyuxia。在以后的使用中可以自己修改。
  • 一加密狗开发基本原理: 经过我的探索,加密狗的...这里我在safenet的技术人员的帮助下,已经在windows上成功生成了我这一套加密狗的库文件(因为是linux所以是.a文件),替换原有的库文件,成功的把例程跑起来了...

    一加密狗开发基本原理:

    经过我的探索,加密狗的基本原理就是每个加密狗有不同的id,根据加密狗的id生成独一无二的库文件,然后再在程序中加入vendorcode文件,比对插入的加密狗和code文件,如果匹配就识别成功,否则不成功。
    这里我在safenet的技术人员的帮助下,已经在windows上成功生成了我这一套加密狗的库文件(因为是linux所以是.a文件),替换原有的库文件,成功的把例程跑起来了:
    在这里插入图片描述
    别的我也不多说,因为不同的加密狗厂商有不同的加密方案,本文主要内容是介绍QT如何调用外部库文件

    在QT中调用库文件

    外部库文件主要就是保留了头文件(.h),把繁琐的函数实现部分(.cpp)文件封装成了库文件(.a,.lib),即静态库文件
    动态库文件是程序运行时需要的文件,如.dll文件,可以自动链接,静态库则需要手动链接并调用。

    这里的库文件结构:
    在这里插入图片描述其中.h文件是对一些函数的声明,.a文件是对函数的实现
    qt链接库文件
    可以手动在qt的项目pro文件中链接,也可以在项目名称上右键->添加库-》外部库:
    在这里插入图片描述
    选择库的地址,这里我在项目目录下新建了lib文件夹,把这三个文件放入其中:
    在这里插入图片描述然后点确定就会自动链接了
    在项目中引入库的头文件:
    但是我怎么引入也都不成功,是因为我放在了项目的lib文件夹下,引入的话需要指明文件夹位置:

    #include "./lib/dog_api.h"
    

    这样就成功了,也有代码提示:
    在这里插入图片描述环境构建完成,接下来就能根据例程进行加密狗开发了

    展开全文
  • QWebSocket 添加 SLL 加密的 Demo,支持单向认证和双向认证,支持windows和linux双平台。
  •   以下为转载参考内容: SQLite是一个轻量的、跨平台的、...然而免费版的SQLite有一个致命缺点:不支持加密。这就导致存储在SQLite中的数据可以被任何人用任何文本编辑器查看到。   SQLite加密方式 对数...

     

    以下为转载参考内容:

    SQLite是一个轻量的、跨平台的、开源的数据库引擎,它的在读写效率、消耗总量、延迟时间和整体简单性上具有的优越性,使其成为移动平台数据库的最佳解决方案(如iOS、Android)。

     

    然而免费版的SQLite有一个致命缺点:不支持加密。这就导致存储在SQLite中的数据可以被任何人用任何文本编辑器查看到。

     

    SQLite加密方式

    对数据库加密的思路有两种:

     

    1. 将内容加密后再写入数据库

    这种方式使用简单,在入库/出库只需要将字段做对应的加解密操作即可,一定程度上解决了将数据赤裸裸暴露的问题。

     

    不过这种方式并不是彻底的加密,因为数据库的表结构等信息还是能被查看到。另外写入数据库的内容加密后,搜索也是个问题。

     

    2. 对数据库文件加密

    将整个数据库整个文件加密,这种方式基本上能解决数据库的信息安全问题。目前已有的SQLite加密基本都是通过这种方式实现的。

     

     

    QtCipherSqlitePlugin 最近升级到 1.0 版。这是一个比较大的升级,增加了一些新功能。感兴趣的童鞋可以升级试用下。

    与之前的版本一样,QtCipherSqlitePlugin 还是基于 wxSQLite3 提供的 sqlite3secure 这个库。1.0 版的 QtCipherSqlitePlugin 插件将依赖的 wxSQLite3 升级到 4.0.4,sqlite 的版本是 3.24.0。

    最新的 1.0 版代码可以使用 git 从 github 或者 gitee 获取:

    1. git clone https://github.com/devbean/QtCipherSqlitePlugin.git
    2. // OR
    3. // git clone https://gitee.com/devbean/QtCipherSqlitePlugin.git
    4. cd QtCipherSqlitePlugin
    5. git checkout 1.0

    全新的插件项目结构

    前面几个版本的插件与 Qt 私有类紧密耦合,导致插件的代码会随着 Qt 的更新出现无法编译的情况。当初提到的解决方案是,将 Qt 的某些私有类的实现代码直接添加到插件代码树中,除去 Qt 私有类的依赖。这样,针对以后 Qt 的更新,插件只选择对性能有影响的部分进行跟进。这种实现固然能够减小插件代码的修改,但带来的问题是可能与未来的 Qt 版本不兼容,并且移植插件代码时可能会有一些问题。例如,虽然在外部使用时,插件的接口没有任何变化,但实际内部有了翻天覆地的变化。

    为了解决这一问题,豆子重新调整了插件的项目结构。在 sqlitecipher 文件夹下的 sqlitecipher.pro 中增加了 Qt 私有文件的导入:

    1. QT_FOR_CONFIG += sqldrivers-private
    2. ...
    3. QT = core core-private sql-private

    现在,我们的插件已经能够使用 Qt 私有类,而且编译插件也不需要做任何修改。目前豆子只使用 Qt 5.11 进行了测试,如果有其它版本的 Qt 不能正常使用,请及时联系豆子。

    本次更新我们还是使用了 SQLITECIPHER 作为插件的名字。如果需要修改这个名字,Qt4 需要修改 smain.cpp 中的 DriverName 定义,Qt5 需要修改 SqliteCipherDriverPlugin.json 中的 SQLITECIPHER 一行。

    编译插件

    插件的编译可以通过 Qt Creator 或者直接使用命令。

    使用 Qt Creator  编译,将 clone 下来的代码切换到 tag 1.0,然后打开整个项目,编译完毕之后将编译之后得到的 sqlitecipher(d).dll 复制到 Qt 的插件目录 plugins/sqldrivers 即可。

    或者可以依次使用下面的命令:

    windows 下 如果用的是vs的编译器

    1.打开vs的开发者cmd命令行

    2.将make改为nmake

    1. git clone https://github.com/devbean/QtCipherSqlitePlugin.git
    2. # OR https://gitee.com/devbean/QtCipherSqlitePlugin.git
    3. cd QtCipherSqlitePlugin
    4. git checkout 1.0
    5. cd sqlitecipher
    6. mkdir -p build && cd build qmake ../sqlitecipher.pro
    7. make
    8. make install # 可能需要提升权限

    检查 QtCipherSqlitePlugin 是否成功加载

    我们使用下面的代码检查 QtCipherSqlitePlugin 是否成功加载:

    qDebug() << QSqlDatabase::drivers();

    如果输出中有 SQLITECIPHER 的名字,说明插件是正常的。

    为没有加密的数据库增加密码

    Qt 默认提供的 SQLite 插件是没有加密功能的。新版本的 QtCipherSqlitePlugin 支持为原本没有加密的数据库增加密码,使用方法如下:

    1. QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
    2. dbconn.setDatabaseName("test.db");
    3. dbconn.setPassword("test");
    4. dbconn.setConnectOptions("QSQLITE_CREATE_KEY");
    5. if (!dbconn.open()) {
    6. qDebug() << "Can not open connection: " << dbconn.lastError().driverText();
    7. exit(CONNECTION_FAILED);
    8. }

    上面的代码,我们使用 test.db 数据库,将密码设置为 test,同时指定连接选项为QSQLITE_CREATE_KEY。此时,调用open()函数之后,QtCipherSqlitePlugin 将使用改密码为这个数据库进行加密。

    删除数据库密码

    QtCipherSqlitePlugin 可以删除数据库密码,此时需要提供原密码,并使用连接选项QSQLITE_REMOVE_KEY,如下:

    1. QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
    2. dbconn.setDatabaseName("test.db");
    3. dbconn.setPassword("test");
    4. dbconn.setConnectOptions("QSQLITE_REMOVE_KEY");
    5. if (!dbconn.open()) {
    6. qDebug() << "Can not open connection: " << dbconn.lastError().driverText();
    7. exit(CONNECTION_FAILED);
    8. }

    更新数据库密码

    QtCipherSqlitePlugin 可以更新数据库原有密码,需要设置原密码,并且使用连接选项QSQLITE_UPDATE_KEY设置新密码,具体代码如下:

    1. QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
    2. dbconn.setDatabaseName("test.db");
    3. dbconn.setPassword("test");
    4. dbconn.setConnectOptions("QSQLITE_UPDATE_KEY=newtest");
    5. if (!dbconn.open()) {
    6. qDebug() << "Can not open connection: " << dbconn.lastError().driverText();
    7. exit(CONNECTION_FAILED);
    8. }

    如果原密码不正确,QtCipherSqlitePlugin 会直接返回错误。

    如果新密码设置为空,例如QSQLITE_UPDATE_KEY=,则作用等同于删除密码。

    设置加密算法

    QtCipherSqlitePlugin 支持四种加密算法:

    • AES 128 Bit CBC – No HMAC (wxSQLite3)
    • AES 256 Bit CBC – No HMAC (wxSQLite3)
    • ChaCha20 – Poly1305 HMAC (sqleet)
    • AES 256 Bit CBC – SHA1 HMAC (SQLCipher)

    其中使用到的术语定义如下:

    • AES = Advanced Encryption Standard (Rijndael algorithm)
    • CBC = Cipher Block Chaining mode
    • HMAC = Hash Message Authentication Code
    • ChaCha20 = symmetric stream cipher developed by Daniel J. Bernstein
    • Poly1305 = cryptographic message authentication code (MAC) developed by Daniel J. Bernstein
    • SHA1 = Secure Hash Algorithm 1

    默认加密算法在编译时设置。可以修改 sqlitecipher/sqlite3/sqlite3.pri 文件中的DEFINES += ...一行,找到CODEC_TYPE=CODEC_TYPE_CHACHA20一句,修改CODEC_TYPE的值即可。可选值为:

    • CODEC_TYPE_AES128
    • CODEC_TYPE_AES256
    • CODEC_TYPE_CHACHA20(默认)
    • CODEC_TYPE_SQLCIPHER

    运行时修改加密算法,则可以通过连接参数QSQLITE_USE_CIPHER。例如下面的代码:

    1. QSqlDatabase dbconn = QSqlDatabase::addDatabase("SQLITECIPHER");
    2. dbconn.setDatabaseName("test.db");
    3. dbconn.setPassword("test");
    4. dbconn.setConnectOptions("QSQLITE_USE_CIPHER=sqlcipher");

    QSQLITE_USE_CIPHER的可选值分别为:

    • aes128cbc
    • aes256cbc
    • chacha20
    • sqlcipher
    展开全文
  • 因工作需要,将在局域网内部实现软件版本控制,管理诸多软件源代码。 综合考虑,决定将版本控制服务器gitblit搭建在windows7平台下,然后在各个客户机(麒麟linux系统)上使用Qt+git的方式,提交源代码。 大致流程...

    因工作需要,将在局域网内部实现软件版本控制,管理诸多软件源代码。
    综合考虑,决定将版本控制服务器gitblit搭建在windows7平台下,然后在各个客户机(麒麟linux系统)上使用Qt+git的方式,提交源代码。
    大致流程如下:

    1. 在windows7上搭建java环境
    2. 在windows7上部署gitblit
    3. 将gitblit添加至计算机的启动服务中,实现开机自动启动
    4. 在linux系统中,安装部署git
    5. 在Qt中使用git
      gitblit及git的方法)

    一、简单介绍gitblit和git的关系

    (一)为什么要软件版本控制

    什么是代码托管?或者说为什么要代码托管,可以假设几个场景。

    1. 程序的代码始终处于一个更新迭代的过程中,但是这个更新迭代不一定是完美的,所以有时候需要将代码返回到曾经的一个版本,即回滚。
    2. 同一段初始的代码,可能由此衍生出众多的衍生版本,版本众多,需要梳理清楚。
    3. 同一个软件,可能需要群策群力,大家共同来完善他,每个人都可以在这段软件中贡献自己的智慧。
      在以上场景中,都需要用到一个代码版本控制软件。

    (二)怎么实现软件版本控制

    软件版本控制,需要有一个远端代码仓库,即服务器端,以及本地代码仓库,客户端。
    在互联网上的远端代码仓库,最知名的,当然是github,除此之外,在国内常用的,还有码云等等,在这些平台上,能实现代码托管。
    而最有名的本地代码版本控制系统,当然是git。
    还是情景假设,如下步骤

    1. 当你写完一段代码,你首先要将这段代码,保存到本地仓库,这个过程就是commit。
    2. 保存到本地仓库后,你觉得这段代码值得与大家分享了,或者放在本地不踏实,怕丢,就需要上传到远端仓库,上传的过程,就是push。
    3. 过了很久,你想看看远端仓库,这个代码的最新状态,是否有别人提交了新的修改了,你首先需要做的,就是把远端最新的版本下载到本地,就是fetch。
    4. 你看了看最新的代码,感觉好像颇有参考价值,决定将其和自己本地的代码融合到一块,就是merge。
    5. 有时候你对别人的代码比较自信,觉得没必要分两步走,也耐不住这个性子,想要下载了代码之后,直接合并,一步到位,这个过程就是pull。
    6. 过了一阵子,你发觉这个版本不想要了,想回退到某个版本,于是,你首先得查看,你提交了哪些版本,即git log。找到了你想要的那个版本,于是git reset,回退。
      理解了这个过程,就能大概知道了版本控制的作用了。

    二、在32位windows7部署gitblit

    (一)部署java环境

    gitblit的运行依赖于java环境,因此首先需要部署java环境。
    我用来假设版本控制服务器的操作系统是32位的windows7,于是我使用的也是相应的jdk版本。
    我使用的是免安装版本的,需要自行将java写入操作系统的环境变量中。

    1. “计算机” -> “属性” -> “高级系统设置” -> “环境变量” 中的“系统变量”。
    2. 添加JAVA_HOME,指向你的java文件夹的目录。比如C:\Program Files\Java\jdk1.8.0
    3. 添加CLASSPATH,这么写.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
    4. 在原来的一项,path中,添加;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin
      添加完成后,测试一下,打开电脑的cmd命令行,输入java -version,如果显示了你的java版本号,则说明环境变量添加成功了。

    (二)配置gitblit

    gitblit的部署,同样是免安装版的,将其放在某个你觉得稳妥的位置。

    1. 找一个你觉得稳妥的位置,新建一个文件夹,命名成你喜欢的名字,如“gitblitRep”,后面作为软件仓库使用。
    2. 打开文件夹下的“data”文件夹,找到“defaults.properties”,修改其中内容。
    3. 修改“git.repositoriesFolder = F:\gitblitRep”后面那是路径,是你自己新建的文件夹,即软件仓库。
    4. 修改一个绑定的ip,你在局域网中搭建服务器,当然不是为了自己本地使用,因此你需要修改“server.httpBindInterface = 127.0.0.1”为“server.httpBindInterface = XX.XX.XX.XX”,你的某个网卡的IP,多网卡的话,更需要指定那块网卡的IP。
    5. 你当然还可以修改更多东西,比如“server.httpPort”或者“server.httpsPort”,这是别人网页访问gitblit时输入的地址后面带的端口号。都有默认值,可以不修改。http的默认值为8442。

    到此,配置修改完毕,运行就可以使用了。双击文件根目录下的“gitblit.cmd”,出现一个命令框,别关,命令框关了就停止运行了。在浏览器中输入“XX.XX.XX.XX:8442”,就能访问版本控制网页了。

    (三)将gitblit注册为计算机的服务项自启动

    在文件夹的根目录下,有一个“installService.cmd”,右键“编辑”,需要根据你的系统的具体情况修改一些参数。

    @REM arch = x86, amd64, or ia32
    SET ARCH=x86                 #如果是32位操作系统,则填写x86,如果是64位操作系统,则填写amd64
    SET CD=F:\gitblit-1.9.1      #根据你的gitblit的实际位置填写
    

    **注意!**运行这个cmd文件,不能直接双击运行,而是要在管理员模式下启动cmd,然后切换到这个文件目录下,运行该cmd文件。比如在cmd命令行中,依次输入,

    f:
    cd gitblit-1.9.1
    start installService.cmd
    

    或许你可以直接双击运行“installService.cmd”,可以先试试,看看计算机的“服务”中,有没有新增一条“gitbilit”,如果有,则达到目的了。
    至此,开机就能自启动gitblit了。
    另外,gitblit默认的用户名是admin,密码为admin。

    三、在麒麟linux系统安装git

    这个其实操作没什么难点,繁琐的是如果你像我这样离线安装,就需要自行解决一些依赖问题,这就有些棘手了。
    git依赖于perl和git-man,因此,需要先安装这两个库,才能正常安装git。
    另外,麒麟linux使用的是deb安装包,与ubuntu的deb貌似通用,我安装的几个deb包,都是通过ubuntu下载,然后安装的。按照如下顺序安装deb包吧(笔者已经下载整理好了,文末将提供下载链接)

    sudo dpkg -i liberror-perl_0.17-1.2_all.deb
    sudo dpkg -i git-man_2.7.4-0ubuntu1.10_all.deb
    sudo dpkg -i git_2.7.4-0ubuntu1.10_arm64.deb
    

    如此安装的git的默认目录为/usr/bin/git。记下这个目录,如果你的电脑不是这个目录,可以用这条linux命令找一下他在哪

    sudo find / -name git
    

    一般就是包含usr和bin的一条路径。

    四、在Qt使用git

    为了方便在Qt使用git,可以直接在Qt进行提交,需要将git使用ssh的传输方式,ssh是加密传输的方式,需要在本机电脑生成公钥。在linux终端中,依次输入以下命令,注意看我添加的注释。

    (一)使用ssh的配置

    #随便取一个你喜欢的用户名,比如superman
    git config --global user.name "username"       
    
    #随便取一个你喜欢的邮箱,不需要真实存在,比如superman@mail.com,记录下来
    git config --global user.email "useremail"  
    
    #使用刚刚你输入的邮箱名,回车后,一路回车,不用输入任何东西。
    ssh-keygen -t rsa -C "useremail"
    
    

    到此,就生成你的公钥了,需要将你的公钥填写到gitblit网站中。首先找到你的公钥在哪。

    #默认的目录
    cd ~/.ssh
    
    #你可以看到有三个文件
    ls
    
    #打开其中的id_rsa.pub,将其中的内容复制出来(可以直接用鼠标选中,右键复制)
    vim id_rsa.pub
    

    下面将公钥写入gitblit

    1. 打开浏览器,输入访问地址"XX.XX.XX.XX:8442"。
    2. 输入用户名admin,密码admin。
    3. 在右上角头像位置,点击,出现下拉框,选中“用户中心”。
    4. 页面中点击“SSH Keys”,出现一个添加ssh公钥的输入框,粘贴进去,然后添加即可。

    (二)创建版本库

    1、gitblit创建版本库

    1. 打开浏览器,输入访问地址"XX.XX.XX.XX:8442"。
    2. 输入用户名admin,密码admin。
    3. 在右上角头像位置,点击,出现下拉框,选中“创建版本库”。
    4. 在出现的页面中,输入一个版本库的名字,名字自取,点击“创建”
    5. 在“概况”中,看到“版本库地址”,复制其中的ssh开头的地址。记下这个地址,是后面在本地提交软件代码时,输入的远端仓库的地址。

    2、在本地创建仓库

    我是在现有的代码中,创建一个代码仓库的,并且想要实现在Qt中直接提交代码的功能。

    1. 打开Qt,打开想要版本控制的软件代码。
    2. 在Qt的上边沿菜单栏中,选择“工具” -> “选项” -> “版本控制” -> “Git”,其中有一栏“附加在系统PATH之前”,在后输入git的目录,比如/usr/bin/git。然后“OK”,“APPLY”。
    3. 还是Qt的菜单栏中,“工具” -> “Git” -> “创建仓库”,选中你的代码所在的文件夹,确定,这时候,回在这个文件夹下,生成一个“.git”的文件夹,应该是隐藏的。
    4. 在linux的终端打开到这个文件夹所在的目录,然后输入如下命令git init,初始化项目。
    5. git remote add origin "刚刚复制的ssh的地址"
    6. git add .,将代码提交到缓存区。
    7. git commit -m '随便写点什么,引号内就是描数内容,类似备注'
    8. git push -u origin master,上传到远端代码仓库。
    9. git pull --rebase origin master,从远端仓库,下拉至本地。
    10. git config --global push.default simple

    至此,第一次提交和下拉,就完成了,后续就可以再Qt中,直接使用commit,pull和push等功能了。
    另外,再Qt中使用这些功能时,还会提示一些信息,这只是提示信息,根据信息,做好选择,然后在终端输入相应的命令即可。

    五、结语及下载链接

    至此,整个过程就介绍完了,至于git的具体使用方法,日后再行介绍。
    最后是传送门,git和gitblit及他们的依赖库的下载链接。
    git2.7.4及相关依赖库(麒麟linux可用)
    gitblit-1.9.1及32位jdk

    展开全文
  • 最近在项目中用到QT结合cryptlib使用的情况,折腾了两天,总算解决了,把问题记录一下 1、代码生成里边QT默认的是多线程DLL,而crypt使用的是多线程,如果crypt使用多线程dll问题会非常多,非常麻烦,使用静态库是...
  • 于是利用Qt界面配合自己写了一套加密算法,一般也是可以保证安全的。效果如下: 二、详解 1、代码 (1)autosetup.h #ifndef WIDGET_H #define WIDGET_H #include <QtCore> #include <QtGui> #...
  • Qt中对sqlite加密

    千次阅读 2015-08-18 16:44:21
    带有加密功能的SQLite Qt插件,了解加密的原理,即实现SQLite预留的接口sqlite3_key()来实现对其加密。如果按照文中说的一步一步去做,耗费精力比较大(亲测有效)。通过下载文末github项目 https://github.
  • Linux 基于tar与openssl加密解密压缩包

    千次阅读 2018-04-28 11:46:01
    跨公网传输备份文件是运维和DBA们经常干的活,但是未经加密的压缩文件在公网上传输,就好比在亚龙湾裸泳,稍不留神就被拍啊,哈哈!本文主要描述通过openssl结合gzip与tar命令来实现加密,再传输那就安心多了。 ...
  • 1. Qt 连接mysql程序运行时报如下错误 QSqlDatabase: MYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL7 原因可能是QT安装自带的缺乏libqsqlmysql....
  • gpg实现对称加密 1、对文件加密(对dushan这个文件加密)gpg -c dushan 2、对文件进行解密,(对生成的dushan.gpg并输出到文件file.txt中,注意-o选线必须在前-d在选项在后) gpg -o file.txt -d dushan.gpg gpg...
  • Qt如何进行MD5加密

    千次阅读 2019-02-20 16:33:21
    创建一个简单的QT程序,在main.c文件中 添加头文件 #include &lt;QCryptographicHash&gt; //md5加密的库 #include &lt;QDebug&gt; //调试输出 #include "widget.h" #include &lt;...
  • 加密算法很简单,就是设定一密钥,将明文与其循环异或得到密文。 关键是中文字符的加密(假设明文字符串为str) 我的解决方法是先将str使用Base64编码再使用与密钥异或加密 QByteArray a = str.toLocal8Bit().to...
  • Qt5+vs2013环境写的一个软件注册机,用来给软件加密,原理是获取客户机的mac地址和CPU序列号加密形成机器码,注册机根据机器码加上软件使用的时间限制生成注册码
  • linux必备软件合集

    千次阅读 2018-03-27 15:28:23
    也省的每次安装完原生的系统再麻烦的安装,但是这些软件并不仅仅局限于ubuntu14.04美化篇刚装上ubuntu,看起来很朴素,而且用起来很多习惯发生了变化,也不怎么美观,但是ubuntu因为linux强大的软件集和扩展新,可以...
  • 我想利用qt写一个开机自启动的程序,各个程序自启动后,会挂在后台隐藏,用户看不见,然后这个程序可以和前端通过websocket通信,前端会提供ip和port,以及一条给我的消息,但我收到此消息后,就获取本机中插入的...
  • 一、LinuxQt简单使用 以制作一个简单的点击按钮在文本框出现hello world为例 参考链接:https://www.cnblogs.com/letben/p/5205060.html 此链接是转载他人博客,仅作为笔记使用,侵删。 二、Qt内编辑mainwindow....
  • 关于Linux下的crypt加密

    千次阅读 2015-09-23 16:06:45
    调试pfsense开源防火墙时,需要修改初始...故用到此函数 #define _XOPEN_SOURCE #include char *crypt(const char *key, const char *salt); gcc pass.c -o pass -lcrypt ...参数key是待加密的字符串,salt是影响加
  • 本文是windows系统,MinGW64位环境,MSVC编译环境下在quazipd和...解压缩在C盘,这里是模拟linux系统环境,解压缩后运行 msys.bat 就可以加载msys,并且把qt的mgw安装目录加入到系统环境变量:C:\Qt\Qt5.12.2\Tools\m
  • QTcpSocket 添加 SLL 加密的 Demo,支持单向认证和双向认证,支持windows和linux双平台。
  • Linux下安装libsodium,启用ss的chacha20高级加密

    万次阅读 多人点赞 2017-08-28 20:52:22
    Shadowsocks-qt5是一款支持Windows和Linux的Shadowsocks客户端,如下在Ubuntu 16.04上面安装Shadowsocks-qt5。sudo add-apt-repository ppa:hzwhuang/ss-qt5 sudo apt-get update sudo apt-get install shadowsocks-...
  • 软件加密例子.rar

    2019-06-08 00:52:48
    软件加密的相关例子。支持开发语言如下:ASP,BC++,C#,Delphi,Director,Excel,Java,linux,PB,PHP,VB,VBNET,VC,VFP,易语言,VCNET,安卓,LabView,QT,FLEX,SQL,PYTHON,NODEJS,ELECTRONJS。
  • Python 和 Qt (PyQt) 中带有 GUI 的加密语音聊天应用程序 要求 Python 2.x Qt4 PyQt4 音频 基本设置 注意:这些说明适用于 Ubuntu(一般为 Linux) 安装 Qt4。 从网站下载 Qt 4 并安装它。 下载 PyQt4 并安装它...
  • 客户需求解密板子里面的加密文件,做的openssl的加解密的tooltool去除了加密的,只需要解密,想加密只需反向操作下。源码: https://github.com/leolin0518/openssl_dec_enc_tool记录下: 这个工具是给客户测试...
  • 如果您想自己构建它(我建议Linux用户这样做),请获取qt4,调用qmake并在.pro文件所在的目录中进行构建,您应该已完成。 使用Windows构建时,我建议使用MinGw。 加密来自Bruce Schneiers站点的c-sample。 如果有人...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,692
精华内容 2,676
关键字:

linuxqt加密软件

linux 订阅