由于项目需要,用python django写restful接口遇到瓶颈,python django+uwsgi处理请求是会阻塞的,

如果阻塞请求不及时处理,会卡住越来越多的其它的请求,导致越来越多的502。所以将请求处理频繁的,会阻

塞长时间的接口用lua实现,lua放在nginx里跑,还是很快的。

  呵呵,费话少说了!

  项目因用 到rc4加密算法,但网上实现lua rc4算法的很少,有的要依赖lua第三方库,很不方便。根据wiki

现自己的算法:

  

-- RC4
-- http://en.wikipedia.org/wiki/RC4 function KSA(key)
local key_len = string.len(key)
local S = {}
local key_byte = {} for i = , do
S[i] = i
end for i = , key_len do
key_byte[i-] = string.byte(key, i, i)
end local j =
for i = , do
j = (j + S[i] + key_byte[i % key_len]) %
S[i], S[j] = S[j], S[i]
end
return S
end function PRGA(S, text_len)
local i =
local j =
local K = {} for n = , text_len do i = (i + ) %
j = (j + S[i]) % S[i], S[j] = S[j], S[i]
K[n] = S[(S[i] + S[j]) % ]
end
return K
end function RC4(key, text)
local text_len = string.len(text) local S = KSA(key)
local K = PRGA(S, text_len)
return output(K, text)
end function output(S, text)
local len = string.len(text)
local c = nil
local res = {}
for i = , len do
c = string.byte(text, i, i)
res[i] = string.char(bxor(S[i], c))
end
return table.concat(res)
end -------------------------------
-------------bit wise-----------
------------------------------- local bit_op = {}
function bit_op.cond_and(r_a, r_b)
return (r_a + r_b == ) and or
end function bit_op.cond_xor(r_a, r_b)
return (r_a + r_b == ) and or
end function bit_op.cond_or(r_a, r_b)
return (r_a + r_b > ) and or
end function bit_op.base(op_cond, a, b)
-- bit operation
if a < b then
a, b = b, a
end
local res =
local shift =
while a ~= do
r_a = a %
r_b = b % res = shift * bit_op[op_cond](r_a, r_b) + res
shift = shift * a = math.modf(a / )
b = math.modf(b / )
end
return res
end function bxor(a, b)
return bit_op.base('cond_xor', a, b)
end function band(a, b)
return bit_op.base('cond_and', a, b)
end function bor(a, b)
return bit_op.base('cond_or', a, b)
end --key = "Key"
--text = "Plaintext"
--K = RC4(key, text)
--print (K)
--text = RC4(key, K)
--print (text)
--
--key = "Wiki"
--text = "pedia"
--K = RC4(key, text)
--print (K)
--
--key = "Secret"
--text = "Attack at dawn"
--K = RC4(key, text)
--print (K)

  可以根据python的Crypto.Cipher库中ARC4算法比较,相关代码在github

lua rc4算法实现的更多相关文章

  1. 对RC4算法进行改写,新的加密算法RCX。

    最近研究JWT算法, JWT由header.payload.signature三个部分组成,payload是非加密的,一些敏感信息能被别人非法获得,必要时候要加密. 加密算法中,RC4算法的速度可以达 ...

  2. WebSphere禁用SSLv3和RC4算法教程

    WebSphere经常会报“SSL 3.0 POODLE攻击信息泄露”和"SSL/TLS 受诫礼(BAR-MITZVAH)攻击"两个漏洞,前者建议禁用SSL算法后者建议禁用RC4算 ...

  3. (转)WebSphere禁用SSLv3和RC4算法教程

    原文:https://www.cnblogs.com/lsdb/p/7126399.html WebSphere经常会报“SSL 3.0 POODLE攻击信息泄露”和"SSL/TLS 受诫礼 ...

  4. RC4算法的Python实现详注

    刚对RC4算法进行了学习,网上发现https://ju.outofmemory.cn/entry/46753 中作者展示了RC4的python实现,但代码缺乏注释,较为晦涩,因此本文对部分代码进行了注 ...

  5. c# rc4算法,加密解密类

    rc4算法,原理,以密匙生成256位的密匙流,然后以车轮式滚过源数据异或加密. /* * 由SharpDevelop创建. * 用户: YISH * 日期: 04/04/2015 * 时间: 03:0 ...

  6. RC4算法

    RC4算法简介:https://baike.baidu.com/item/RC4%E7%AE%97%E6%B3%95/9686396?fr=aladdin RC4算法java实现: /** * RC4 ...

  7. Weblogic禁用SSLv3和RC4算法教程

    weblogic在启用https时一样会报同WebSphere那样的一SSL类漏洞,中间件修复这些漏洞原理上来说是一样的,只是在具体操作上有着较大的区别. 1. weblogic禁用SSLv3算法 编 ...

  8. Tomcat禁用SSLv3和RC4算法

    1.禁用SSLv3(SSL 3.0 POODLE攻击信息泄露漏洞(CVE-2014-3566)[原理扫描]) 编缉$CATALINA_HOEM/conf/server.xml配置文件,找到https端 ...

  9. (转)SSL/TLS 漏洞“受戒礼”,RC4算法关闭

    原文:https://blog.csdn.net/Nedved_L/article/details/81110603 SSL/TLS 漏洞“受戒礼” 一.漏洞分析事件起因2015年3月26日,国外数据 ...

随机推荐

  1. go语言使用go-sciter创建桌面应用(六) Element元素操作和Event事件响应

    详细的文档请看下面两个链接: https://sciter.com/docs/content/sciter/Element.htm https://sciter.com/docs/content/sc ...

  2. EF 更新实体 The instance of entity type 'BabyEvent' cannot be tracked because another instance

    加上AsNoTracking. 人不能两次踏入同一条河. 我 就踏入了.o(╥﹏╥)o

  3. 函数的有用信息,装饰器 day12

    一 函数的有用信息 本函数的功能:绘图功能,实时接收数据并绘图.:return: 绘图需要的数据,返回给前端某标签 def f1(): ''' 本函数的功能:绘图功能,实时接收数据并绘图. :retu ...

  4. Spring 监听

    Spring 中的事件监听的实现 这里我们不讨论事件监听的机制的原理,我们只讨论如何在项目中实现时间监听. spring的事件监听是基于观察者模式.设计开发中.如下类与接口是我们必须要使用的. App ...

  5. 利用Swoole编写一个TCP服务器,顺带测试下Swoole的4层生命周期

    1首先我们写一个入口脚本,这里简单点的功能就是开启服务和关闭服务 <?php //CLI命令 if(isset($argv[1]) && in_array($argv[1], [ ...

  6. poj 2828(线段树 逆向思考) 插队是不好的行为

    http://poj.org/problem?id=2828 插队问题,n个人,下面n行每行a,b表示这个人插在第a个人的后面和这个人的编号为b,最后输出队伍的情况 涉及到节点的问题可以用到线段树,这 ...

  7. iOS.mach_absolute_time

    1. Technical Q&A QA1398 Mach Absolute Time Units https://developer.apple.com/library/mac/qa/qa13 ...

  8. HDU 6126.Give out candies 最小割

    Give out candies Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Other ...

  9. CURLOPT_HEADER

    curl_setopt($curl, CURLOPT_HEADER, false); true:输出请求头

  10. [FreeMind] 绘制思维时遇到的常见问题解决办法

    如何改变节点的摆放方向? 如果是新建节点,选择要放置节点的那一侧,按enter键,或者鼠标右键,插入平行节点即可. 如果是已经建好的节点,可以用ctrl+x, ctrl+v粘贴到另一边,或者选中子节点 ...