cryptography

数字签名、数字证书与HTTPS是什么关系?

孤人 提交于 2020-08-15 15:35:28
理解HTTPS前需要理解这些概念:明文、密文、密码、密钥、对称加密、非对称加密、摘要、数字签名、数字证书 密码(cipher) 密码学中的密码(cipher)和我们日常生活中所说的密码不太一样,计算机术语『密码 cipher』是一种用于加密或者解密的算法,而我们日常所使用的『密码 password』是一种口令,它是用于认证用途的一组文本字符串,这里我们要讨论的是前者:cipher。 密钥(key) 密钥是一种参数,它是在使用密码(cipher)算法过程中输入的参数。同一个明文在相同的密码算法和不同的密钥计算下会产生不同的密文。很多知名的密码算法都是公开的,密钥才是决定密文是否安全的重要参数,通常密钥越长,破解的难度越大,比如一个8位的密钥最多有256种情况,使用穷举法,能非常轻易的破解,知名的DES算法使用56位的密钥,目前已经不是一种安全的加密算法了,主要还是因为56位的密钥太短,在数小时内就可以被破解。密钥分为对称密钥与非对称密钥。 明文/密文 明文(plaintext)是加密之前的原始数据,密文是通过密码(cipher)运算后得到的结果成为密文(ciphertext) 对称密钥 对称密钥(Symmetric-key algorithm)又称为共享密钥加密,对称密钥在加密和解密的过程中使用的密钥是相同的,常见的对称加密算法有DES、3DES、AES、RC5、RC6

大技霸教你远程执行Linux脚本和命令

时光总嘲笑我的痴心妄想 提交于 2020-08-14 13:56:45
如果现在需要在 Linux 服务器上执行一系列命令(比如搭建 LNMP 环境)我应该会第一时间想到想办法写个 Shell 脚本,然后扔上去执行以下看看结果。 然而一贯懒惰的我并不想这么去执行 Shell 和一些重复命令。所以俺寻思可以有个方法本地直接在服务器端执行脚本,寻思生异端,这时候有某大技霸告诉我有个叫 paramiko 的 Python 库,从此开启我新世界的大门。 对于 paramiko 安装直接 pip 或者 PyCharm 这里就不多说了,如果看到这里你觉得自己不怎么了解python语法的也不必担心,你完全可以用 paramiko 单纯的执行 Shell 命令查看结果和上传下载文件,省去重复的工作。 paramiko 实现了 SSHv2 协议(底层使用 cryptography ),包含两个核心组件:SSHClient 和 SFTPClient 。 SSHClient 是对 SSH 会话的封装,用于执行远程命令,SFTPClient 是对 SFTP 客户端的封装,用以实现远程文件操作。 这里先举两个列子你应该就明白怎么用了,终于开始正片了。 SSHClient 的列子: # -*- coding: utf-8 -*- import paramiko client = paramiko.SSHClient()# 实例化SSHClient client.set

Hacker News 简讯 2020-07-24

三世轮回 提交于 2020-08-14 13:37:32
最后更新时间: 2020-07-24 22:01 Editorial board of Index and more than 70 staff members resign - (index.hu) 《索引》编辑部和70多名员工辞职 得分:196 | 评论:52 The Four Quadrants of Conformism - (paulgraham.com) 墨守成规的四个象限 得分:193 | 评论:218 FAA issues emergency directive on 2,000 Boeing 737 NG Classic planes - (reuters.com) 美国联邦航空局对2000架波音737 NG经典飞机发布紧急指令 得分:37 | 评论:16 Show HN: How I made simple Geolocation service which handles 6m+ req/mo for $5 - (maxkostinevich.com) 演示HN:我是如何制作简单的地理定位服务的,它能以5美元的价格处理6个月以上的申请/月 得分:248 | 评论:108 Cold Showers: For when people get too hyped up about things - (github.com) 冷水澡:当人们对事情过于兴奋时 得分

「走过」微软、优步,老工程师告诉你哪些数据结构和算法最重要

风格不统一 提交于 2020-08-13 03:24:08
数据结构和基础算法作为计算机科学的必学课程,近几年却关注度越来越少。但 程序员真的不再需要这两门基础知识了吗 ?一位在 Uber 等科技公司工作过的开发者分享了他的一手经验,告诉你实际工作中会用到哪些数据结构和算法。 作者:Gergely Orosz,机器之心编译,参与:小舟、杜伟。 日常工作中,你经常使用算法和数据结构吗?曾就职于 Uber 等科技公司的工程师 Gergely Orosz 提出了这样一个问题。此外,他也注意到,越来越多的人觉得算法是无用的,并认为它们只是科技公司提出的一种强制性措施罢了。 本文作者 Gergely Orosz。 不仅如此,也有更多的人抱怨称算法只是纯粹的学术练习。在 Homebrew 作者 Max Howell 发表他的谷歌面试经历之后,这样的想法被进一步普及。 虽然 Gergely Orosz 自己也从来不需要使用二叉树翻转(binary tree inversion),但是他在 Skype、Microsoft、Skyscanner 以及 Uber 工作时,每天都会遇到使用数据结构和算法的情况。 此外,他有时也需要基于这些概念编写代码和做出决策。最后,Gergely Orosz 借助这些知识来理解有些事物如何和为何构建,以及如何使用或修改它们。 由此可见,数据结构和算法并不是如人们所言用处不大。在本文中,Gergely Orosz

BUUCTF--[BJDCTF2020]BJD hamburger competition

删除回忆录丶 提交于 2020-08-11 12:05:55
测试文件: https://www.lanzous.com/ib3e6ih 代码分析 这出题人真是个人才,打开一次笑一次,奥利给。 这道题找对文件分析就行,dnSpy打开Assembly-CSharp.dll文件 1 using System; 2 using System.Security.Cryptography; 3 using System.Text; 4 using UnityEngine; 5 6 // Token: 0x02000004 RID: 4 7 public class ButtonSpawnFruit : MonoBehaviour 8 { 9 // Token: 0x0600000A RID: 10 RVA: 0x00002110 File Offset: 0x00000310 10 public static string Md5( string str ) 11 { 12 byte [] bytes = Encoding.UTF8.GetBytes( str ); 13 byte [] array = MD5.Create().ComputeHash(bytes); 14 StringBuilder stringBuilder = new StringBuilder(); 15 foreach ( byte b in array) 16 { 17

文件的散列与校验:.NET发现之旅(五)

試著忘記壹切 提交于 2020-08-11 01:42:20
如何保障文档在互联网传输过程中的安全性不是这一节讨论的内容,我们要讨论的内容是如何验证文档的完整性。记得08年我接手绵阳九院的一个MOSS项目,由于对方单位知识的保密性,平时电脑启动就需要U盘解密,所以当时接管负责这个项目的时候,对方首先要求凡是通过网络传输的文档,必须提供MD5验证,所以当时就顺手写了这个工具FileChecker,今天分享给大家。 验证数据完整性,我们常用哈希算法。关于哈希算法,无论是MD5还是SHA1,最终生成的哈希值理论上都是不可逆的,主要用于保证数据的完整性,这和对称和非对称加密不同,后者是可逆的,主要是为了防窃取。由于很多网站使用MD5加密某些数据,比如密码、权限等,引起很多***想方设法的穷举破解MD5值,但多半都是白费力气,运气好的时候就撞上了,但是这个运气不是每个人都有的。一个安全的哈希算法在设计时必须满足两个要求:其一是寻找两个输入得到相同的输出值在计算上是不可行的,这就是我们通常听说的抗碰撞;其二是找一个输出,能得到给定的输入在计算上是不可行的,即不可从结果推导出它的初始状态。据说王小云教授当年就是采用碰撞破解了MD5一部分,也证明了MD5不是完美的,但至今MD5是没有被破解的。 FileChecker用.NET开发,其中核心类比较简单,就不做解释了,代码如下: using System; using System.Collections

Hacker News 简讯 2020-07-22

我与影子孤独终老i 提交于 2020-08-10 21:57:38
最后更新时间: 2020-07-22 23:01 MRI scans of 130 mammal brains, including humans, indicate equal connectivity - (aftau.org) 包括人类在内的130个哺乳动物大脑的核磁共振扫描显示,它们之间的连接是相等的 得分:83 | 评论:18 Experimental Blood Test Detects Cancer Up to Four Years Before Symptoms Appear - (scientificamerican.com) 在实验性癌症症状出现前四年血液检测出来 得分:443 | 评论:121 Show HN: UI Playbook – A documented collection of UI components - (uiplaybook.dev) Show HN:UI剧本–UI组件的文档集合 得分:54 | 评论:9 Online classes are not worth cost of full tuition - (thestar.com) 在线课程不值得全额学费 得分:94 | 评论:66 Design Docs at Google - (industrialempathy.com) 谷歌设计文档 得分:147 | 评论:44 How you

大技霸教你远程执行Linux脚本和命令

天涯浪子 提交于 2020-08-09 15:53:07
如果现在需要在 Linux 服务器上执行一系列命令(比如搭建 LNMP 环境)我应该会第一时间想到想办法写个 Shell 脚本,然后扔上去执行以下看看结果。 然而一贯懒惰的我并不想这么去执行 Shell 和一些重复命令。所以俺寻思可以有个方法本地直接在服务器端执行脚本,寻思生异端,这时候有某大技霸告诉我有个叫 paramiko 的 Python 库,从此开启我新世界的大门。 对于 paramiko 安装直接 pip 或者 PyCharm 这里就不多说了,如果看到这里你觉得自己不怎么了解python语法的也不必担心,你完全可以用 paramiko 单纯的执行 Shell 命令查看结果和上传下载文件,省去重复的工作。 paramiko 实现了 SSHv2 协议(底层使用 cryptography ),包含两个核心组件:SSHClient 和 SFTPClient 。 SSHClient 是对 SSH 会话的封装,用于执行远程命令,SFTPClient 是对 SFTP 客户端的封装,用以实现远程文件操作。 这里先举两个列子你应该就明白怎么用了,终于开始正片了。 SSHClient 的列子: # -*- coding: utf-8 -*- import paramiko client = paramiko.SSHClient()# 实例化SSHClient client.set

Error unprotecting the session cookie.The key {...} was not found in the key ring.

筅森魡賤 提交于 2020-08-09 12:40:53
.Net Core 3.0 续: Error unprotecting the session cookie.The payload was invalid. 出现了新的BUG warn: Microsoft.AspNetCore.Session.SessionMiddleware[ 7 ] Error unprotecting the session cookie. System.Security.Cryptography.CryptographicException: The key {40d34e51 -8e22-41b3-a179-fe353bcd0280} was not found in the key ring. at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(Byte[] protectedData, Boolean allowOperationsOnRevokedKeys, UnprotectStatus & status) at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.DangerousUnprotect(Byte[

C# AES加密解密

北城余情 提交于 2020-08-05 18:31:28
using System; using System.Security.Cryptography; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace UnitTest.OtherTest { [TestClass] public class AesClass { [TestMethod] public void TestAES() { string str = " 嘿,你好 " ; string result = AesEncrypt(str, " 12345678876543211234567887654abc " ); Console.WriteLine(result); Console.WriteLine(AesDecrypt(result, " 12345678876543211234567887654abc " )); } /// <summary> /// AES 加密 /// </summary> /// <param name="str"> 明文(待加密) </param> /// <param name="key"> 密文 </param> /// <returns></returns> public static string AesEncrypt(