海运的博客

使用kcptun加速ss连接速度

发布时间:February 23, 2017 // 分类: // No Comments

kcptun是一种双向加速软件,可用于openvz,经测速速度比单向加速软件锐速和bbr好很多。
安装ss:

wget -P /etc/yum.repos.d/ https://copr.fedorainfracloud.org/coprs/librehat/shadowsocks/repo/epel-7/librehat-shadowsocks-epel-7.repo
yum install shadowsocks-libev -y

安装golang并build kcptun:

go get -v -u github.com/xtaci/kcptun/client
go get -v -u github.com/xtaci/kcptun/server
VERSION=`date -u +%Y%m%d`
LDFLAGS="-X main.VERSION=$VERSION -s -w"
GCFLAGS=""
env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "$LDFLAGS" -gcflags "$GCFLAGS" -o kcptun_client github.com/xtaci/kcptun/client
env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "$LDFLAGS" -gcflags "$GCFLAGS" -o kcptun_server github.com/xtaci/kcptun/server

服务器启动ss和kcptun:

ss-server -m rc4-md5 -p 58888 -k key-t 7200
kcptun_server -l :58999 -t 127.0.0.1:58888 -mtu 1400 -sndwnd 1024 -rcvwnd 256 -mode fast2 -crypt aes-128 -key key

客户端启动ss和kcptun:

kcptun_client -l :7071 -r serverip:58999 -mtu 1400 -sndwnd 256 -rcvwnd 1024 -mode fast2 -dscp 0 -crypt aes-128 -key key
ss-local -s 127.0.0.1 -p 7071 -k key-l 7070 -b 0.0.0.0 -m rc4-md5 -t 86400

PHP下AES CBC/CFB 256加密

发布时间:February 3, 2017 // 分类:PHP // No Comments

AES CFB加解密:

<?php
$iv = substr(md5("iv"),0,16);
$encryption_key = substr(md5("key"),0,32);
echo $encryption_key."\n";
$data = 'data';
$data = openssl_encrypt($data, 'aes-256-cfb', $encryption_key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);
echo bin2hex($data) . "\r\n";

$iv = substr(md5("iv"),0,16);
$data = openssl_decrypt($data, 'aes-256-cfb', $encryption_key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);
echo $data . "\r\n";
?>

AES CBC加解密:

<?php
$iv = substr(md5("iv"),0,16);
$encryption_key = substr(md5("key"),0,32);
$data = 'data';
$data = openssl_encrypt($data, 'aes-256-cbc', $encryption_key, OPENSSL_RAW_DATA, $iv);
echo bin2hex($data) . "\r\n";

$iv = substr(md5("iv"),0,16);
$data = openssl_decrypt($data, 'aes-256-cbc', $encryption_key, OPENSSL_RAW_DATA, $iv);
echo $data . "\r\n";
?>

易语言调用openssl库实现aes cbc/cfb 256加密

发布时间:February 3, 2017 // 分类: // 1 Comment

AES分块加密,每块16字节,IV大小等于块大小,key大小等于加密强制128/256位。
自定义数据类型:

.版本 2

.数据类型 AES_KEY
    .成员 rd_key, 整数型, , "60"
    .成员 rounds, 整数型

自定义DLL命令:
.版本 2

.DLL命令 AES_set_encrypt_key, 整数型, "libeay32.dll", "@AES_set_encrypt_key", , int AES_set_encrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
    .参数 userKey, 文本型, 传址
    .参数 bits, 整数型
    .参数 key, AES_KEY, 传址

.DLL命令 AES_set_decrypt_key, 整数型, "libeay32.dll", "@AES_set_decrypt_key", , int AES_set_decrypt_key(const unsigned char *userKey, const int bits, AES_KEY *key);
    .参数 userKey, 文本型, 传址
    .参数 bits, 整数型
    .参数 key, AES_KEY, 传址

.DLL命令 AES_cbc_encrypt, , "libeay32.dll", "@AES_cbc_encrypt", , void AES_cbc_encrypt(const unsigned char *in, unsigned char *out, size_t length, const AES_KEY *key, unsigned char *ivec, const int enc);
    .参数 in, 字节集
    .参数 out, 字节集
    .参数 length, 整数型
    .参数 key, AES_KEY
    .参数 ivec, 字节集
    .参数 enc, 整数型

.DLL命令 AES_cfb_encrypt, , "libeay32.dll", "@AES_cfb128_encrypt", , void AES_cfb128_encrypt(const unsigned char *in, unsigned char *out, size_t length, const AES_KEY *key, unsigned char *ivec, int *num, const int enc)
    .参数 in, 字节集, 传址
    .参数 out, 字节集, 传址
    .参数 length, 整数型
    .参数 key, AES_KEY, 传址
    .参数 ivec, 字节集, 传址
    .参数 int, 整数型, 传址
    .参数 enc, 整数型

AES CBC加解密,须补码:

.版本 2
.支持库 dp1
.支持库 spec

.子程序 AES_CBC
.局部变量 key, AES_KEY
.局部变量 output, 字节集
.局部变量 iv, 字节集
.局部变量 len, 整数型
.局部变量 source, 字节集
.局部变量 key_str, 文本型

.版本 2
.支持库 dp1
.支持库 spec
'iv 16字节
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = 到字节集 (“data”)
'加密强度256位,密钥取32字节
key_str = 取文本左边 (取数据摘要 (到字节集 (“key”)), 32)
.如果真 (AES_set_encrypt_key (key_str, 256, key) < 0)
    返回 ()
.如果真结束
'补码
len = 取字节集长度 (source)
.计次循环首 (16 - len % 16, )
    source = source + { 0 }
.计次循环尾 ()
调试输出 (source)
len = 取字节集长度 (source)
output = 取空白字节集 (len)
AES_cbc_encrypt (source, output, len, key, iv, 1)
调试输出 (“en”, output)

.如果真 (AES_set_decrypt_key (key_str, 256, key) < 0)
    返回 ()
.如果真结束
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = output
output = 取空白字节集 (len)
AES_cbc_encrypt (source, output, len, key, iv, 0)
调试输出 (“de”, output)
调试输出 (到文本 (output))

AES CFB加解密,无须补码,加密数据等于原始数据大小:

.版本 2
.支持库 dp1
.支持库 spec

.子程序 AES_CFB
.局部变量 key, AES_KEY
.局部变量 output, 字节集
.局部变量 iv, 字节集
.局部变量 len, 整数型
.局部变量 source, 字节集
.局部变量 key_str, 文本型
.局部变量 n, 整数型

iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = 到字节集 (到字节集 (“data”))
key_str = 取文本左边 (取数据摘要 (到字节集 (“key”)), 32)
.如果真 (AES_set_encrypt_key (key_str, 256, key) < 0)
    返回 ()
.如果真结束
len = 取字节集长度 (source)
output = 取空白字节集 (len)
AES_cfb_encrypt (source, output, len, key, iv, n, 1)
调试输出 (“en”, output)

'cfb下设解密key也用AES_set_encrypt_key
.如果真 (AES_set_encrypt_key (key_str, 256, key) < 0)
    返回 ()
.如果真结束
iv = 到字节集 (取文本左边 (取数据摘要 (到字节集 (“iv”)), 16))
source = output
output = 取空白字节集 (len)
n = 0
AES_cfb_encrypt (source, output, len, key, iv, n, 0)
调试输出 (output)
调试输出 (“de”, 到文本 (output))

PHP版AES CBC/CFB加解密,与易语言版兼容。

分类
最新文章
最近回复
  • track: NAT 部分没处理,这块感觉有问题。
  • yu: 查到有用的资料很幸福!
  • boscotsang: 请问下服务器端如何控制权限让通过权限认证的客户端才能连接?现在这样只要有自编译的客户端程序都可...
  • yck932: 大侠,请问哪里有 tunnels 详细参考资料,谢谢
  • bubble: 现在linux 4.9以上的内核有个bbr的参数,用这个bbr比用锐速效果更好,可参考我的博文...
  • wang: openwrt 只有 tmp/etc/miniupnpd.conf 修改后又重置了,其他路径找...
  • wbq: 可以了 只是https透明代理如何做呢?
  • wbq: 你的这个配置需要浏览器设置代理ip+port, 现在假设不设置,只配置客户端网关为Nginx那...
  • wbq: 您好,想用Nginx做个透明代理,客户端机器配置下网关(即Nginx那台机器),客户端dns配...
  • ccc: 可以提供易调用openssl常用函数吗?