精华内容
下载资源
问答
  • python加密和解密 您是视觉学习者吗? YouTube上查看本教程。 点击这里 加密是对信息进行编码的过程,只有授权方才能访问它。 这一点至关重要,因为它可以安全地保护您不希望任何人看到或访问的数据。 本...

    python加密和解密

    您是视觉学习者吗? 在YouTube上查看本教程。 点击这里

    加密是对信息进行编码的过程,只有授权方才能访问它。 这一点至关重要,因为它可以安全地保护您不希望任何人看到或访问的数据。

    在本教程中,您将学习如何使用Python使用加密库对文件或任何字节对象(也包括字符串对象)进行加密

    我们将使用对称加密,这意味着与加密数据相同的密钥也可用于解密。 那里有很多加密算法,我们要使用的库是建立在AES算法之上的。

    注意:了解加密和 哈希算法 之间的区别很重要 ,在加密中,一旦拥有密钥,便可以检索原始数据,而在 哈希函数中 则不能,因此,它们被称为单向加密。

    让我们从安装加密开始:

    pip3 install cryptography

    打开一个新的Python文件,让我们开始吧:

    from cryptography.fernet import Fernet
    

    生成密钥

    Fernet是对称身份验证密码技术的实现,让我们首先生成该密钥并将其写入文件:

    def write_key () :
        """
        Generates a key and save it into a file
        """
        key = Fernet.generate_key()
        with open( "key.key" , "wb" ) as key_file:
            key_file.write(key)

    generate_key()函数会生成一个新的Fernet密钥,您确实需要将其保存在安全的地方,如果丢失了该密钥,则将无法再解密使用此密钥加密的数据。

    由于此密钥是唯一的,因此我们不会在每次加密任何内容时生成密钥,因此我们需要一个函数来为我们加载该密钥:

    def load_key () :
        """
        Loads the key from the current directory named `key.key`
        """
        return open( "key.key" , "rb" ).read()

    字符串加密

    现在我们知道了如何获取密钥,让我们从加密字符串对象开始,只是为了让您首先熟悉它。

    生成密钥并将其写入文件:

    # generate and write a new key
    write_key()

    让我们加载该密钥:

    # load the previously generated key
    key = load_key()

    一些消息:

    message ="some secret message" .encode()
    

    我们需要对字符串进行编码,以将其转换为适合加密的字节,encode()方法使用utf-8编解码器对该字符串进行编码。 使用该键初始化Fernet类:

    # initialize the Fernet class
    f = Fernet(key)

    加密消息:

    # encrypt the message
    encrypted = f.encrypt(message)

    f.encrypt()方法对传递的数据进行加密,这种加密的结果称为“ Fernet令牌”,并具有强大的隐私性和真实性保证。

    让我们看看它的外观:

    # print how it looks
    print(encrypted)

    输出:

    b'gAAAAABdjSdoqn4kx6XMw_fMx5YT2eaeBBCEue3N2FWHhlXjD6JXJyeELfPrKf0cqGaYkcY6Q0bS22ppTBsNTNw2fU5HVg-c-0o-KVqcYxqWAIG-LVVI_1U='
    

    解密:

    decrypted_encrypted = f.decrypt(encrypted)
    print(decrypted_encrypted)
    b'some secret message'
    

    的确是同一条信息。

    f.decrypt()方法解密Fernet令牌。 成功解密后,这将返回原始明文作为结果,否则将引发异常。

    有关更多详细信息和说明,请查阅密码学的官方文档

    另外,如果您对密码学感兴趣,我个人建议您阅读“ 严重密码学”书,因为它非常适合您并且数学上不太详细。

    翻译自: https://hackernoon.com/how-to-encrypt-and-decrypt-data-in-python-53193yhj

    python加密和解密

    展开全文
  • 本教程,您将学习如何使用Python通过加密库对文件或任何字节对象(也包括字符串对象)进行加密 。 我们将使用对称加密,这意味着与加密数据相同的密钥也可用于解密。 那里有很多加密算法,我们将使用的库是基于...

    您是视觉学习者吗? 在YouTube上查看本教程。 点击这里

    加密是对信息进行编码的过程,只有授权方才能访问它。 这一点至关重要,因为它可以安全地保护您不希望任何人看到或访问的数据。

    在本教程中,您将学习如何使用Python通过加密库对文件或任何字节对象(也包括字符串对象)进行加密

    我们将使用对称加密,这意味着与加密数据相同的密钥也可用于解密。 那里有很多加密算法,我们将使用的库是基于AES算法构建的。

    注意:了解加密和 哈希算法 之间的区别很重要 ,在加密中,一旦拥有密钥,便可以检索原始数据,而在 哈希函数中 则不能,因此,它们被称为单向加密。

    让我们从安装加密开始:

    pip3 install cryptography
    

    打开一个新的Python文件,让我们开始吧:

    from cryptography.fernet import Fernet
    

    生成密钥

    Fernet是对称身份验证密码技术的实现,让我们首先生成该密钥并将其写入文件:

    def write_key () :
        """
        Generates a key and save it into a file
        """
        key = Fernet.generate_key()
        with open( "key.key" , "wb" ) as key_file:
            key_file.write(key)

    generate_key()函数生成一个新的Fernet密钥,您确实需要将其保存在安全的地方,如果丢失了该密钥,则将无法再解密使用此密钥加密的数据。

    由于此密钥是唯一的,因此我们不会在每次加密任何内容时生成密钥,因此我们需要一个函数来为我们加载该密钥:

    def load_key () :
        """
        Loads the key from the current directory named `key.key`
        """
        return open( "key.key" , "rb" ).read()

    字符串加密

    现在我们知道了如何获取密钥,让我们从加密字符串对象开始,只是先让您熟悉它。

    生成密钥并将其写入文件:

    # generate and write a new key
    write_key()

    让我们加载该密钥:

    # load the previously generated key
    key = load_key()

    一些消息:

    message = "some secret message" .encode()
    

    我们需要对字符串进行编码,以将其转换为字节以适合加密,encode()方法使用utf-8编解码器对该字符串进行编码。 使用该键初始化Fernet类:

    # initialize the Fernet class
    f = Fernet(key)

    加密消息:

    # encrypt the message
    encrypted = f.encrypt(message)

    f.encrypt()方法对传递的数据进行加密,这种加密的结果称为“ Fernet令牌”,并具有强大的隐私性和真实性保证。

    让我们看看它的外观:

    # print how it looks
    print(encrypted)

    输出:

    b'gAAAAABdjSdoqn4kx6XMw_fMx5YT2eaeBBCEue3N2FWHhlXjD6JXJyeELfPrKf0cqGaYkcY6Q0bS22ppTBsNTNw2fU5HVg-c-0o-KVqcYxqWAIG-LVVI_1U='
    

    解密:

    decrypted_encrypted = f.decrypt(encrypted)
    print(decrypted_encrypted)
    b'some secret message'
    

    的确是同一条信息。

    f.decrypt()方法解密Fernet令牌。 成功解密后,这将返回原始纯文本作为结果,否则将引发异常。

    有关更多详细信息和说明,请查阅密码学的官方文档

    另外,如果您对密码学感兴趣,我个人建议您阅读“ 严重密码学”书,因为它非常适合您,并且数学上不太详细。

    From: https://hackernoon.com/how-to-encrypt-and-decrypt-data-in-python-53193yhj

    展开全文
  • 文件的加密和解密

    2021-02-05 14:46:13
    借助异或运算的特性(一个数据异或同一个数据两次,得到原本的数据),所以在加密过程中直接使用异或的方式,将文件变为乱码的格式,解密时再次异或一个数值,就可以实现文件的加密和解密过程了。 在加密过程中...

    文件的加密和解密

    文件的加密和解密是一个简单的逻辑过程,最简单的文件的加密过程,就是在文件的读取过程中,借助异或运算的特性(一个数据异或同一个数据两次,得到原本的数据),所以在加密的过程中直接使用异或的方式,将文件变为乱码的格式,解密时再次异或一个数值,就可以实现文件的加密和解密过程了。

    在加密过程中我们异或的数值可以称为密匙,在解密时输入密匙的值,即可进行解密

    下面为大家展示文件的加密和解密的代码:

        private static Scanner sc = new Scanner(System.in);
        public static void main(String[] args) throws IOException {
            System.out.println("请输入要加密的文件路径");
            String fileName = sc.nextLine();
            //加密前的文件
            File oldFile = new File(fileName);
            //加密后的文件,将文件命命为旧文件名前加“key-”
            File newFile = new File(oldFile.getParentFile(),"key-"+oldFile.getName());
            FileInputStream fis = new FileInputStream(oldFile);
            FileOutputStream fos = new FileOutputStream(newFile);
            //密匙值
            int key = keyword();
            while (true){
                int b = fis.read();
                if (b == -1){
                    break;
                }
                fos.write(b^key);
            }
            System.out.println("加密完成,文件地址为:"+newFile.getParent());
        }
        public static int keyword(){
            int key;
            System.out.println("请输入密匙的值:");
            try {
                key = sc.nextInt();
            }catch (Exception e){
                System.out.println("密匙应输入数值,请重新输入:");
                return keyword();
            }
            return key;
        }
    

    解密代码与加密代码基本相同,只需要添加一个判别密匙的选择语句即可,在此就不展示了。

    展开全文
  • 数字签字认证机构是电子商务的核心技术。数字签名作为目前Internet电子商务重要的技术,不断地进行改进,标准化。本文从数字签名的意义出发,详细介绍了数字签名涉及到的内容与算法,并自行结合进行改进。  ...

    数字签字和认证机构是电子商务的核心技术。数字签名作为目前Internet中电子商务重要的技术,不断地进行改进,标准化。本文从数字签名的意义出发,详细介绍了数字签名中涉及到的内容与算法,并自行结合进行改进。

         引言

       RSA密码系统是较早提出的一种公开钥密码系统。1978年,美国麻省理工学院(MIT)的Rivest,Shamir和Adleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出了基于数论的非对称(公开钥)密码体制,称为RSA密码体制。RSA是建立在“大整数的素因子分解是困难问题”基础上的,是一种分组密码体制。 

        对文件进行加密只解决了传送信息的保密问题,而防止他人对传输的文件进行破坏,以及如何确定发信人的身份还需要采取其它的手段,这一手段就是数字签名。在电子商务安全保密系统中,数字签名技术有着特别重要的地位,在电子商务安全服务中的源鉴别、完整性服务、不可否认服务中,都要用到数字签名技术。在电子商务中,完善的数字签名应具备签字方不能抵赖、他人不能伪造、在公证人面前能够验证真伪的能力。

        实现数字签名有很多方法,目前数字签名采用较多的是公钥加密技术,如基于RSA Date Security 公司的PKCS(Public Key Cryptography Standards)、DSA(Digital Signature Algorithm)、x.509、PGP(Pretty Good Privacy)。1994年美国标准与技术协会公布了数字签名标准而使公钥加密技术广泛应用。公钥加密系统采用的是非对称加密算法。

    目前的数字签名是建立在公共密钥体制基础上,它是公用密钥加密技术的另一类应用。它的主要方式是,报文的发送方从报文文本中生成一个128位的散列值(或报文摘要)。发送方用自己的私人密钥对这个散列值进行加密来形成发送方的数字签名。然后,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。报文的接收方首先从接收到的原始报文中计算出128位的散列值(或报文摘要),接着再用发送方的公用密钥来对报文附加的数字签名进行解密。如果两个散列值相同、那么接收方就能确认该数字签名是发送方的。通过数字签名能够实现对原始报文的鉴别。

        在书面文件上签名是确认文件的一种手段,其作用有两点:第一,因为自己的签名难以否认,从而确认了文件已签署这一事实;第二,因为签名不易仿冒,从而确定了文件是真的这一事实。

    数字签名与书面文件签名有相同之处,采用数字签名,也能确认以下两点:第一,信息是由签名者发送的;第二,信息自签发后到收到为止未曾作过任何修改。这样数字签名就可用来防止电子信息因易被修改而有人作伪,或冒用别人名义发送信息。或发出(收到)信件后又加以否认等情况发生。
        应用广泛的数字签名方法主要有三种,即:RSA签名DSS签名Hash签名。这三种算法可单独使用,也可综合在一起使用。数字签名是通过密码算法对数据进行加、解密变换实现的,用DES算去、RSA算法都可实现数字签名。但三种技术或多或少都有缺陷,或者没有成熟的标准。
       用RSA或其它公开密钥密码算法的最大方便是没有密钥分配问题(网络越复杂、网络用户越多,其优点越明显)。因为公开密钥加密使用两个不同的密钥,其中有一个是公开的,另一个是保密的。公开密钥可以保存在系统目录内、未加密的电子邮件信息中、电话黄页(商业电话)上或公告牌里,网上的任何用户都可获得公开密钥。而私有密钥是用户专用的,由用户本身持有,它可以对由公开密钥加密信息进行解密。
        RSA算法中数字签名技术实际上是通过一个哈希函数来实现的。数字签名的特点是它代表了文件的特征,文件如果发生改变,数字签名的值也将发生变化。不同的文件将得到不同的数字签名。一个最简单的哈希函数是把文件的二进制码相累加,取最后的若干位。哈希函数对发送数据的双方都是公开的。
    DSS数字签名是由美国国家标准化研究院和国家安全局共同开发的。由于它是由美国政府颁布实施的,主要用于与美国政府做生意的公司,其他公司则较少使用,它只是一个签名系统,而且美国政府不提倡使用任何削弱政府窃听能力的加密软件,认为这才符合美国的国家利益。

       Hash签名是最主要的数字签名方法,也称之为数字摘要法(Digital Digest)或数字指纹法(Digital Finger Print)。它与RSA数字签名是单独的签名不同,该数字签名方法是将数字签名与要发送的信息紧密联系在一起,它更适合于电子商务活动。将一个商务合同的个体内容与签名结合在一起,比合同和签名分开传递,更增加了可信度和安全性。数字摘要(Digital Digest)加密方法亦称安全Hash编码法(SHA:Secure Hash Algorithm)或MD5(MD Standard For Message Digest),由RonRivest所设计。该编码法采用单向Hash函数将需加密的明文“摘要”成一串128bit的密文,这一串密文亦称为数字指纹(Finger Print),它有固定的长度,且不同的明文摘要必定一致。这样这串摘要使可成为验证明文是否是“真身”的“指纹”了。

        只有加入数字签名及验证才能真正实现在公开网络上的安全传输。加入数字签名和验证的文件传输过程如下:
    发送方首先用哈希函数从原文得到数字签名,然后采用公开密钥体系用发达方的私有密钥对数字签名进行加密,并把加密后的数字签名附加在要发送的原文后面;
    发送一方选择一个秘密密钥对文件进行加密,并把加密后的文件通过网络传输到接收方;
    发送方用接收方的公开密钥对密秘密钥进行加密,并通过网络把加密后的秘密密钥传输到接收方;
    接受方使用自己的私有密钥对密钥信息进行解密,得到秘密密钥的明文;
    接收方用秘密密钥对文件进行解密,得到经过加密的数字签名;
    接收方用发送方的公开密钥对数字签名进行解密,得到数字签名的明文;
    接收方用得到的明文和哈希函数重新计算数字签名,并与解密后的数字签名进行对比。如果两个数字签名是相同的,说明文件在传输过程中没有被破坏。
        如果第三方冒充发送方发出了一个文件,因为接收方在对数字签名进行解密时使用的是发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数字签名和经过计算的数字签名必然是不相同的。这就提供了一个安全的确认发送方身份的方法。
    安全的数字签名使接收方可以得到保证:文件确实来自声称的发送方。鉴于签名私钥只有发送方自己保存,他人无法做一样的数字签名,因此他不能否认他参与了交易。
       数字签名的加密解密过程私有密钥的加密解密过程虽然都使用公开密钥体系,但实现的过程正好相反,使用的密钥对也不同。数字签名使用的是发送方的密钥对,发送方用自己的私有密钥进行加密,接收方用发送方的公开密钥进行解密。这是一个一对多的关系:任何拥有发送方公开密钥的人都可以验证数字签名的正确性,而私有密钥的加密解密则使用的是接收方的密钥对,这是多对一的关系:任何知道接收方公开密钥的人都可以向接收方发送加密信息,只有唯一拥有接收方私有密钥的人才能对信息解密。在实用过程中,通常一个用户拥有两个密钥对,一个密钥对用来对数字签名进行加密解密,一个密钥对用来对私有密钥进行加密解密。这种方式提供了更高的安全性。
    展开全文
  • 1.PHP加密扩展库Mcrypt安装标准的PHP安装过程中并没有把Mrcypt安装上,但PHP的主目录下包含了libmcrypt.dlllibmhash.dll文件 (libmhash.dll是Mhash扩展库,这里可以一起装上)。首先,将这两个文件复制到系统目录...
  • sql存储过程加密和解密(MSSQL)

    千次阅读 2019-10-24 10:14:15
    网络上,看到有SQL Server 2000和SQL Server 2005 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的。后来自己根据实际的应用环境,编写了两个存储过程,一个加密存储过程(sp_...
  • Mcrypt库支持20多种加密算法8种加密模式,具体可以通过函数mcrypt_list_algorithms()...1.PHP加密扩展库Mcrypt安装标准的PHP安装过程中并没有把Mrcypt安装上,但PHP的主目录下包含了libmcrypt.dlllibmhash...
  • 编程实现Simplified-AES算法加密过程和解密过程 十组测试用例. 一组测试用例包括: 明文(2字节), 密钥(2字节), 对应的密文(2字节), 各一行以16进制方式存放文本文件. 例如: 文本文件: testcase1.txt, 内容如下(3...
  • 开始:网络上,看到有SQL Server 2000和SQL Server 2005 的存储过程加密和解密的方法,后来分析了其中的代码,发现它们的原理都是一样的。后来自己根据实际的应用环境,编写了两个存储过程,一个加密存储过程(sp_...
  • 详细演示AES加密解密过程.AES是分组密钥,算法输入128位数据,密钥...由于外部输入的加密密钥K长度有限,所以算法要用一个密钥扩展程序(Keyexpansion)把外部密钥K扩展成更长的比特串,以生成各轮的加密和解密密钥。
  • 该工具类中用到了BASE64,需要...RSA加密明文最大长度117字节,解密要求密文最大长度为128字节,所以在加密和解密过程中需要分块进行。 RSA加密对明文的长度是有限制的,如果加密数据过大会抛出如下异常:  ...
  • 简介对称加密: 在加密和解密过程中使用相同的密钥, 或是两个可以简单地相互推算的密钥的加密算法.非对称加密: 也称为公开加密, 它需要一个密钥对, 一个是公钥, 一个是私钥, 一个负责加密, 一个负责解密.openssl 替代...
  • 记录一次4399加密信息解密过程 一、前提须知 4399页面,登录面板输入了用户名密码(随便输入,只是拿来试试解密),输入的用户名是:test ,密码:23232323; 4399网站采用的是 HTTP 协议,意味着安全性...
  • Linux 加密和解密

    2014-08-02 10:18:30
    如果AB两个用户通信过程中需要加密解密通信过程中所传输的数据需要做到三点:1、要有身份验证,2、保证数据的完整性,3、还要有对数据具有保密性。下面可结合图片详细说明其加密解密的过程。 若B向A通信,...
  • Android自带的加密和解密

    千次阅读 2015-09-09 09:57:50
    当今社会信息安全越来越重要,其中最为关键的就是传输过程中的安全。这就需要一套安全可靠且有效的加密和解密算法来实现。 Android中有一套成熟的加密和解密的模块。下面不多说直接上代码,大家一看就知道了! ...
  • RSA加密和解密

    千次阅读 2018-05-30 10:05:31
    RSA是一种非对称加密算法,...一、RSA加密和解密过程是基于以下形式,其中明文为M,密文为C,公匙PU={e, n},密匙PR={d, n}。1、准备工作,选择两个大素数p和q,计算p和q的乘积n,计算p-1和q-1的乘积,选择一个与p-1...
  • 一:前言 软件开发,经常要对数据进行传输,数据传输的... 加密和解密的算法有很多,主流有对称加密和非对称加密!两者的区别就不这里做介绍,有不懂的朋友可以去查Google。 (精读阅读本篇可能花费您10...
  • 用PGP实现加密和解密过程

    万次阅读 2015-04-10 12:27:33
    安装Gpg4win2.2.1,选择安装所有的组件,安装成功后可以看到: 步骤1:产生一对RSA密钥 ... ...接下来输入passphrase,然后就会生成2048位的公钥/私钥对(注意:可能要等待...如果成功生成了密钥,则会显示列表。如
  • 互联网数据传输过程中,数据的安全私密性是及其重要的,所以就有数据的加密和解密过程; 加密方式 一、对称加密: 特性: 1、加密方/解密方使用同一个口令 2、将原文分割成固定大小的数据块,对这些块进行加密,...
  • 关于对称加密和解密

    2018-05-14 14:56:00
    对称加密采用了对称密码编码技术,它的特点是文件加密和解密使用相同的密钥加密 也就是密钥也可以用作解密密钥,这种方法密码学叫做对称加密算法,对称加密算法使用起来简单快捷,密钥较短,且破译困难,除了...
  • 实现ECC_SM4_SM3这个密码套件中,密钥交换过程中,存在客户端将Pre-Master Secret使用 SM2 公钥加密后传给服务器端的步骤。所以我们需要实现 SM2 的加密和解密。 如何使用 SM2 算法进行加密和解密,可以参考的...
  • 实际使用过程中我们常常需要对明文的文档内容进行加密处理,本示例使用异或的方式对文档内容加密解密再一次运行程序即可
  • 数据加密和解密总结

    2020-11-30 17:52:44
    过程的逆过程称为解密(descode),即将该编码信息转化为明文的过程。 对称加密(Symmetric Cryptography) 对称加密是最快速、最简单的一种加密方式,加密(encryption与解密(decryption)用的是同样的密钥(secret ...
  • Zhong__加密和解密

    2020-09-24 14:01:24
    需要两个密钥来进行加密和解密,这两个秘钥是公开密钥(publickey,简称公钥)和私有密钥(privatekey,简称私钥)。 单向加密 又称为不可逆加密算法,在加密过程中不使用密钥,明文由系统加密处理成密文,密文...
  • 信息加密和解密

    千次阅读 2018-12-29 17:33:04
    然而传递的过程中,会面临各种各样的潜在的风险,比如通过开发人员,出差人员,离职人员,还有我们的合作伙伴,或者商业间谍,电脑黑客,流程失控等等 加/解密 因为信息传递风的风险,所以我们发送方必须对信息...
  •  服务器支持https协议必须安装一套数字证书,所谓数字证书就是一对公钥私钥,公钥用来加密,私钥用来解密。为了与下文的私钥进行区分,这里的公钥私钥称为公钥1私钥1。 数字证书可以自己制作或者向组织...
  • 因为这个密钥不会在被加密的xml中保存,所以我们需要在加密和解密过程中加载这个密钥并保护它不被窃取。 2、使用对称加密和非对称加密相结合的方法来加密xml 这种方法需要一个用于加密数据的对称密钥和一个用于...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,635
精华内容 654
关键字:

在加密和解密过程中