电子邮件技术–Quoted-Printable编码(QP编码)详解

一、背景 Quoted-Printable编码可译为“可打印字符引用编码”,或者“使用可打印字符的编码”。 通常我们接收电子邮件,查看电子邮件原始信息,经常会看到这种类型的编码!电子邮件信头显示:Content-Transfer-Encoding: quoted-printable 它是多用途互联网邮件扩展(MIME) 一种实现方式。其中MIME是一个互联网标准,它扩展了电子邮件标准,致力于使其能够支持非ASCII字符、二进制格式附件等多种格式的邮件消息。目前http协议中,很多采用MIME框架!quoted-printable 就是说用一些可打印常用字符,表示一个字节(8 […]

[阅读全文...]

Linux下基于HTTP协议带用户认证的GIT开发环境设置

Git 的访问可以采用 HTTP 或 SSH 协议安全的访问,通常我们使用 gitlib 进行 Web 管理,但是在 Linux 命令行开发环境下,基本都是使用 SSH 协议,只需要在 gitlib 里面配置好相应的 SSH Key 就可以。 由于现在开发环境的特殊情况,我们需要在 Linux 命令行开发环境下,不能使用 SSH 方式,而只能使用 HTTP 协议进行安全访问,并且需要对开发者进行认证,并且开发者在本地开发环境中的用户名和密码需要加密存储。 接下来我就简单介绍我们的开发团队是如何在 Linux 命令行环境下进行 GIT 开发环境配置。 1. 创建 用户名/密码 […]

[阅读全文...]

Python编程-字符串的编码转换、存储及乱码问题

Python2(包括Python26、Python27等)的字符串通常包含str、unicode两种类型,通常str的字符串编码方式由源码文件的编码方式决定,目前使用的基本都是UTF-8的编码格式,所以要在py文件的头部指定编码格式: 在Python程序内部,通常使用的字符串为unicode编码,这样的字符串字符是一种内存编码格式,如果将这些数据存储到文件或是记录日志的时候,就需要将unicode编码的字符串转换为特定字符集的存储编码格式,比如:UTF-8、GBK等等,很多时候Python程序员都会遇到乱码问题,相信以下的一些处理方式和技巧能帮助大家解决乱码问题。 unic […]

[阅读全文...]

Nginx应用-Location路由反向代理及重写策略

一、Nginx的反向代理的路由策略 Nginx是著名的高性能Web服务器,应用在很多Web服务领域,同时开发和部署过程中,为了更好的控制接口API(或是WebService),我们需要严格的或是谨慎的规划URL的使用,这样才能为以后的扩张、迭代打下良好的基础,否则杂乱无章的URL使用,将是以后大规模扩展的噩梦。 Location的配置 语法规则: 语法说明: 匹配优先级: 示例: 二、Nginx的Rewrite规则 语法规则: rewrite指令的最后一项参数为flag标记,flag标记有: 示例: 三、Nginx常用设置 1.为了便于日志统计和分析,备注一个日志示例格式, […]

[阅读全文...]

HTTP协议-POST方法详解

一、HTTP协议 HTTP/1.1协议(http://www.faqs.org/rfcs/rfc2616.html)规定的HTTP请求方法有:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT这几种。 其中POST方法一般用来向服务端提交数据,接下来我们主要讨论POST提交数据的几种方式。 二、POST方法 通常HTTP协议是以ASCII编码进行传输,建立在TCP/IP协议之上的应用层协议。HTTP协议报文将请求分为三个部分:状态行、请求头、消息主体。 协议格式如下: HTTP协议规定POST提交的数据必须放在消息主体(entity […]

[阅读全文...]

Tornado编程-WebSocket原理及代码示例

一. WebSocket协议 WebSocket 协议本质上是一个基于 TCP 的协议。 为了建立一个 WebSocket 连接,客户端浏览器首先要向服务器发起一个 HTTP 请求,这个请求和通常的 HTTP 请求不同,包含了一些附加头信息,其中附加头信息”Upgrade: WebSocket”表明这是一个申请协议升级的 HTTP 请求,服务器端解析这些附加的头信息然后产生应答信息返回给客户端,客户端和服务器端的 WebSocket 连接就建立起来了,双方就可以通过这个连接通道自由的传递信息,并且这个连接会持续存在直到客户端或者服务器端的某一方主动的关闭连接。 由于这个规范 […]

[阅读全文...]

OpenSSL编程-Python实现公钥RSAPublicKey格式与大数字符串转换

在我们的项目开发和运维过程中,经常会遇到公钥的RSAPublicKey格式数据与BIGNUM大数字符串格式数据的转换,python的rsa模块提供这方面很便捷的转换,记录一下这两个格式之间的转换函数。

[阅读全文...]

OpenSSL编程-RSA编程详解

一. RSA PEM文件格式 1. PEM私钥格式文件 2. PEM公钥格式文件 3. PEM RSAPublicKey公钥格式文件 二. OpenSSL密钥相关命令 1. 生成密钥 2. 提取PEM格式公钥 3. 提取PEM RSAPublicKey格式公钥 4. 公钥加密文件 5. 私钥解密文件 三. RSA相关API 1. 基本数据结构 2. BN大数系列函数 3. RSA系列函数 4. PEM系列函数 5. RSA加密API 6. RSA解密API 四. RSA编程示例 1. 数据加、密解密示例 2. PEM/BIGNUM公钥转换示例 3. 密钥生成示例

[阅读全文...]

OpenSSL编程-非对称加密及RSA简介

一. 对称与非对称加密 采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。对于加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。常用的对称加密算法有:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法等 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密 […]

[阅读全文...]

OpenSSL编程-3DES编程详解

一. 3DES加密原理 3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法。 3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),加密算法,其具体实现如下:设Ek()和Dk()代 […]

[阅读全文...]