- 浏览: 451122 次
- 性别:
- 来自: 广州
最新评论
-
lhgyy00:
很好,回去好好研究下,3Q
博客资源与博客工具大全 -
ljl.java:
♦
你会遇到几段恋情?很准的哦~ -
ljl.java:
♦
你会遇到几段恋情?很准的哦~ -
jzzwy:
你这个red5是什么版本 Iterator<IConne ...
red5获取在线用户列表 -
81365341:
看着标题“red5配置详解”点进来的,结果没看到一句和配置有关 ...
red5配置详解
"""
The MIT License
Copyright (c) 2005 hoxide
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
QQ Crypt module.
"""
from struct import pack as _pack
from struct import unpack as _unpack
from binascii import b2a_hex, a2b_hex
from random import seed
from random import randint as _randint
__all__ = ['encrypt', 'decrypt']
seed()
op = 0xffffffffL
def xor(a, b):
a1,a2 = _unpack('>;LL', a[0:8])
b1,b2 = _unpack('>;LL', b[0:8])
r = _pack('>;LL', ( a1 ^ b1) & op, ( a2 ^ b2) & op)
return r
def code(v, k):
"""
TEA coder encrypt 64 bits value, by 128 bits key,
QQ do 16 round TEA.
To see:
http://www.ftp.cl.cam.ac.uk/ftp/papers/djw-rmn/djw-rmn-tea.html .
TEA 加密, 64比特明码, 128比特密钥, qq的TEA算法使用16轮迭代
具体参看
http://www.ftp.cl.cam.ac.uk/ftp/papers/djw-rmn/djw-rmn-tea.html
>;>;>; c = code('abcdefgh', 'aaaabbbbccccdddd')
>;>;>; b2a_hex(c)
'a557272c538d3e96'
"""
n=16 #qq use 16
delta = 0x9e3779b9L
k = _unpack('>;LLLL', k[0:16])
y, z = _unpack('>;LL', v[0:8])
s = 0
for i in xrange(n):
s += delta
y += (op &(z<<4))+ k[0] ^ z+ s ^ (op&(z>;>;5)) + k[1] ;
y &= op
z += (op &(y<<4))+ k[2] ^ y+ s ^ (op&(y>;>;5)) + k[3] ;
z &= op
r = _pack('>;LL',y,z)
return r
def encrypt(v, k):
"""
Encrypt Message follow QQ's rule.
用QQ的规则加密消息
v is the message to encrypt, k is the key
参数 v 是被加密的明文, k是密钥
fill char is some random numbers (in old QQ is 0xAD)
填充字符数是随机数, (老的QQ使用0xAD)
fill n char's n = (8 - (len(v)+2)) %8 + 2
填充字符的个数 n = (8 - (len(v)+2)) %8 + 2
( obviously, n is 2 at least, n is 2-9)
( 显然, n至少为2, 取2到9之间)
then insert (n - 2)|0xF8 in the front of the fill chars
然后在填充字符前部插入1字节, 值为 ((n - 2)|0xF8)
to record the number of fill chars.
以便标记填充字符的个数.
append 7 '\0' in the end of the message.
在消息尾部添加7字节'\0'
thus the lenght of the message become filln + 8 + len(v),
因此消息总长变为 filln + 8 + len(v),
and it == 0 (mod
他模8余0(被8整除)
Encrypt the message .
加密这段消息
Per 8 bytes,
每8字节,
the result is:
规则是
r = code( v ^ tr, key) ^ to (*)
code is the QQ's TEA function.
code函数就是QQ 的TEA加密函数.
v is 8 bytes data to encrypt.
v是被加密的8字节数据
tr is the result in preceding round.
tr是前次加密的结果
to is the data coded in perceding round, is v_pre ^ r_pre_pre
to是前次被加密的数据, 等于 v_pre ^ r_pre_pre
For the first 8 bytes 'tr' and 'to' is zero.
对头8字节, 'tr' 和 'to' 设为零
loop and loop,
不断循环,
that's end.
结束.
>;>;>; en = encrypt('', b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
>;>;>; decrypt(en, b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
''
"""
##FILL_CHAR = chr(0xAD)
END_CHAR = '\0'
FILL_N_OR = 0xF8
vl = len(v)
filln = (8-(vl+2))%8 + 2;
fills = ''
for i in xrange(filln):
fills = fills + chr(_randint(0, 0xff))
v = ( chr((filln -2)|FILL_N_OR)
+ fills
+ v
+ END_CHAR * 7)
tr = '\0'*8
to = '\0'*8
r = ''
o = '\0' * 8
#print 'len(v)=', len(v)
for i in xrange(0, len(v),:
o = xor(v[i:i+8], tr)
tr = xor( code(o, k), to)
to = o
r += tr
return r
def decrypt(v, k):
"""
DeCrypt Message
消息解密
by (*) we can find out follow easyly:
通过(*)式,我们可以容易得发现(明文等于):
x = decipher(v[i:i+8] ^ prePlain, key) ^ preCyrpt
prePlain is pre 8 byte to be code.
perPlain 是被加密的前8字节
Attention! It's v per 8 byte value xor pre 8 byte prePlain,
注意! 他等于前8字节数据异或上前8字节prePlain,
not just per 8 byte.
而不只是前8字节.
preCrypt is pre 8 byte Cryped.
perCrypt 是前8字节加密结果.
In the end of deCrypte the raw message,
在解密完原始数据后,
we have to cut the filled bytes which was append in encrypt.
我们必须去除在加密是添加的填充字节.
the number of the filling bytes in the front of message is
填充在消息头部的字节数是
pos + 1.
pos is the first byte of deCrypted --- r[0] & 0x07 + 2
pos等于解密后的第一字节 --- r[0] & 0x07 + 2
the end of filling aways is 7 zeros.
尾部填充始终是7字节零.
we can test the of 7 bytes is zeros, to make sure it is right.
我们可以通测试最后7字节是零, 来确定它是正确的.
so return r[pos+1:-7]
所以返回 r[pos+1:-7]
>;>;>; r = encrypt('', b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
>;>;>; decrypt(r, b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
''
>;>;>; r = encrypt('abcdefghijklimabcdefghijklmn', b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
>;>;>; decrypt(r, b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
'abcdefghijklimabcdefghijklmn'
>;>;>; import md5
>;>;>; key = md5.new(md5.new('python').digest()).digest()
>;>;>; data='8CE160B9F312AEC9AC8D8AEAB41A319EDF51FB4BB5E33820C77C48DFC53E2A48CD1C24B29490329D2285897A32E7B32E9830DC2D0695802EB1D9890A0223D0E36C35B24732CE12D06403975B0BC1280EA32B3EE98EAB858C40670C9E1A376AE6C7DCFADD4D45C1081571D2AF3D0F41B73BDC915C3AE542AF2C8B1364614861FC7272E33D90FA012620C18ABF76BE0B9EC0D24017C0C073C469B4376C7C08AA30'
>;>;>; data = a2b_hex(data)
>;>;>; b2a_hex(decrypt(data, key))
'00553361637347436654695a354d7a51531c69f1f5dde81c4332097f0000011f4042c89732030aa4d290f9f941891ae3670bb9c21053397d05f35425c7bf80000000001f40da558a481f40000100004dc573dd2af3b28b6a13e8fa72ea138cd13aa145b0e62554fe8df4b11662a794000000000000000000000000dde81c4342c8966642c4df9142c3a4a9000a000a'
"""
l = len(v)
#if l%8 !=0 or l<16:
# return ''
prePlain = decipher(v, k)
pos = (ord(prePlain[0]) & 0x07L) +2
r = prePlain
preCrypt = v[0:8]
for i in xrange(8, l,:
x = xor(decipher(xor(v[i:i+8], prePlain),k ), preCrypt)
prePlain = xor(x, preCrypt)
preCrypt = v[i:i+8]
r += x
if r[-7:] != '\0'*7: return None
return r[pos+1:-7]
def decipher(v, k):
"""
TEA decipher, decrypt 64bits value with 128 bits key.
TEA 解密程序, 用128比特密钥, 解密64比特值
it's the inverse function of TEA encrypt.
他是TEA加密函数的反函数.
>;>;>; c = code('abcdefgh', 'aaaabbbbccccdddd')
>;>;>; decipher( c, 'aaaabbbbccccdddd')
'abcdefgh'
"""
n = 16
y, z = _unpack('>;LL', v[0:8])
a, b, c, d = _unpack('>;LLLL', k[0:16])
delta = 0x9E3779B9L;
s = (delta << 4)&op
for i in xrange(n):
z -= ((y<<4)+c) ^ (y+s) ^ ((y>;>;5) + d)
z &= op
y -= ((z<<4)+a) ^ (z+s) ^ ((z>;>;5) + b)
y &= op
s -= delta
s &= op
return _pack('>;LL', y, z)
def _test():
import doctest, tea
return doctest.testmod(tea)
if __name__ == "__main__":
_test()
The MIT License
Copyright (c) 2005 hoxide
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
QQ Crypt module.
"""
from struct import pack as _pack
from struct import unpack as _unpack
from binascii import b2a_hex, a2b_hex
from random import seed
from random import randint as _randint
__all__ = ['encrypt', 'decrypt']
seed()
op = 0xffffffffL
def xor(a, b):
a1,a2 = _unpack('>;LL', a[0:8])
b1,b2 = _unpack('>;LL', b[0:8])
r = _pack('>;LL', ( a1 ^ b1) & op, ( a2 ^ b2) & op)
return r
def code(v, k):
"""
TEA coder encrypt 64 bits value, by 128 bits key,
QQ do 16 round TEA.
To see:
http://www.ftp.cl.cam.ac.uk/ftp/papers/djw-rmn/djw-rmn-tea.html .
TEA 加密, 64比特明码, 128比特密钥, qq的TEA算法使用16轮迭代
具体参看
http://www.ftp.cl.cam.ac.uk/ftp/papers/djw-rmn/djw-rmn-tea.html
>;>;>; c = code('abcdefgh', 'aaaabbbbccccdddd')
>;>;>; b2a_hex(c)
'a557272c538d3e96'
"""
n=16 #qq use 16
delta = 0x9e3779b9L
k = _unpack('>;LLLL', k[0:16])
y, z = _unpack('>;LL', v[0:8])
s = 0
for i in xrange(n):
s += delta
y += (op &(z<<4))+ k[0] ^ z+ s ^ (op&(z>;>;5)) + k[1] ;
y &= op
z += (op &(y<<4))+ k[2] ^ y+ s ^ (op&(y>;>;5)) + k[3] ;
z &= op
r = _pack('>;LL',y,z)
return r
def encrypt(v, k):
"""
Encrypt Message follow QQ's rule.
用QQ的规则加密消息
v is the message to encrypt, k is the key
参数 v 是被加密的明文, k是密钥
fill char is some random numbers (in old QQ is 0xAD)
填充字符数是随机数, (老的QQ使用0xAD)
fill n char's n = (8 - (len(v)+2)) %8 + 2
填充字符的个数 n = (8 - (len(v)+2)) %8 + 2
( obviously, n is 2 at least, n is 2-9)
( 显然, n至少为2, 取2到9之间)
then insert (n - 2)|0xF8 in the front of the fill chars
然后在填充字符前部插入1字节, 值为 ((n - 2)|0xF8)
to record the number of fill chars.
以便标记填充字符的个数.
append 7 '\0' in the end of the message.
在消息尾部添加7字节'\0'
thus the lenght of the message become filln + 8 + len(v),
因此消息总长变为 filln + 8 + len(v),
and it == 0 (mod
他模8余0(被8整除)
Encrypt the message .
加密这段消息
Per 8 bytes,
每8字节,
the result is:
规则是
r = code( v ^ tr, key) ^ to (*)
code is the QQ's TEA function.
code函数就是QQ 的TEA加密函数.
v is 8 bytes data to encrypt.
v是被加密的8字节数据
tr is the result in preceding round.
tr是前次加密的结果
to is the data coded in perceding round, is v_pre ^ r_pre_pre
to是前次被加密的数据, 等于 v_pre ^ r_pre_pre
For the first 8 bytes 'tr' and 'to' is zero.
对头8字节, 'tr' 和 'to' 设为零
loop and loop,
不断循环,
that's end.
结束.
>;>;>; en = encrypt('', b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
>;>;>; decrypt(en, b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
''
"""
##FILL_CHAR = chr(0xAD)
END_CHAR = '\0'
FILL_N_OR = 0xF8
vl = len(v)
filln = (8-(vl+2))%8 + 2;
fills = ''
for i in xrange(filln):
fills = fills + chr(_randint(0, 0xff))
v = ( chr((filln -2)|FILL_N_OR)
+ fills
+ v
+ END_CHAR * 7)
tr = '\0'*8
to = '\0'*8
r = ''
o = '\0' * 8
#print 'len(v)=', len(v)
for i in xrange(0, len(v),:
o = xor(v[i:i+8], tr)
tr = xor( code(o, k), to)
to = o
r += tr
return r
def decrypt(v, k):
"""
DeCrypt Message
消息解密
by (*) we can find out follow easyly:
通过(*)式,我们可以容易得发现(明文等于):
x = decipher(v[i:i+8] ^ prePlain, key) ^ preCyrpt
prePlain is pre 8 byte to be code.
perPlain 是被加密的前8字节
Attention! It's v per 8 byte value xor pre 8 byte prePlain,
注意! 他等于前8字节数据异或上前8字节prePlain,
not just per 8 byte.
而不只是前8字节.
preCrypt is pre 8 byte Cryped.
perCrypt 是前8字节加密结果.
In the end of deCrypte the raw message,
在解密完原始数据后,
we have to cut the filled bytes which was append in encrypt.
我们必须去除在加密是添加的填充字节.
the number of the filling bytes in the front of message is
填充在消息头部的字节数是
pos + 1.
pos is the first byte of deCrypted --- r[0] & 0x07 + 2
pos等于解密后的第一字节 --- r[0] & 0x07 + 2
the end of filling aways is 7 zeros.
尾部填充始终是7字节零.
we can test the of 7 bytes is zeros, to make sure it is right.
我们可以通测试最后7字节是零, 来确定它是正确的.
so return r[pos+1:-7]
所以返回 r[pos+1:-7]
>;>;>; r = encrypt('', b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
>;>;>; decrypt(r, b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
''
>;>;>; r = encrypt('abcdefghijklimabcdefghijklmn', b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
>;>;>; decrypt(r, b2a_hex('b537a06cf3bcb33206237d7149c27bc3'))
'abcdefghijklimabcdefghijklmn'
>;>;>; import md5
>;>;>; key = md5.new(md5.new('python').digest()).digest()
>;>;>; data='8CE160B9F312AEC9AC8D8AEAB41A319EDF51FB4BB5E33820C77C48DFC53E2A48CD1C24B29490329D2285897A32E7B32E9830DC2D0695802EB1D9890A0223D0E36C35B24732CE12D06403975B0BC1280EA32B3EE98EAB858C40670C9E1A376AE6C7DCFADD4D45C1081571D2AF3D0F41B73BDC915C3AE542AF2C8B1364614861FC7272E33D90FA012620C18ABF76BE0B9EC0D24017C0C073C469B4376C7C08AA30'
>;>;>; data = a2b_hex(data)
>;>;>; b2a_hex(decrypt(data, key))
'00553361637347436654695a354d7a51531c69f1f5dde81c4332097f0000011f4042c89732030aa4d290f9f941891ae3670bb9c21053397d05f35425c7bf80000000001f40da558a481f40000100004dc573dd2af3b28b6a13e8fa72ea138cd13aa145b0e62554fe8df4b11662a794000000000000000000000000dde81c4342c8966642c4df9142c3a4a9000a000a'
"""
l = len(v)
#if l%8 !=0 or l<16:
# return ''
prePlain = decipher(v, k)
pos = (ord(prePlain[0]) & 0x07L) +2
r = prePlain
preCrypt = v[0:8]
for i in xrange(8, l,:
x = xor(decipher(xor(v[i:i+8], prePlain),k ), preCrypt)
prePlain = xor(x, preCrypt)
preCrypt = v[i:i+8]
r += x
if r[-7:] != '\0'*7: return None
return r[pos+1:-7]
def decipher(v, k):
"""
TEA decipher, decrypt 64bits value with 128 bits key.
TEA 解密程序, 用128比特密钥, 解密64比特值
it's the inverse function of TEA encrypt.
他是TEA加密函数的反函数.
>;>;>; c = code('abcdefgh', 'aaaabbbbccccdddd')
>;>;>; decipher( c, 'aaaabbbbccccdddd')
'abcdefgh'
"""
n = 16
y, z = _unpack('>;LL', v[0:8])
a, b, c, d = _unpack('>;LLLL', k[0:16])
delta = 0x9E3779B9L;
s = (delta << 4)&op
for i in xrange(n):
z -= ((y<<4)+c) ^ (y+s) ^ ((y>;>;5) + d)
z &= op
y -= ((z<<4)+a) ^ (z+s) ^ ((z>;>;5) + b)
y &= op
s -= delta
s &= op
return _pack('>;LL', y, z)
def _test():
import doctest, tea
return doctest.testmod(tea)
if __name__ == "__main__":
_test()
发表评论
-
TEA算法的VB实现代码的使用说明
2008-12-30 11:28 1913自从公开了TEA算法的VB代码之后一直有人追问我如何调用这两个 ... -
TEA算法的VB实现代码
2008-12-30 11:02 1619前些日子不少人都要挂QQ,有客户需求就自然有人去研究,所以不少 ... -
QQ通讯协议
2008-12-30 10:56 4161协议说明: 协议由报文 ... -
如何从 Visual Basic 中调用 GetNetworkParams / GetAdapter
2008-12-30 09:52 16641. 启动一个新的 Visual Basic 标准 EX ... -
VB调用GetAdaptersInfo 的正确方法
2008-12-30 09:51 2685网上的教程没有一个能在多网卡或多IP下用的,总是在 Cop ... -
VB做的EXE文件设参数
2008-12-29 12:26 1145这个其实很简单 在 Private Sub Form_L ... -
VB常用字符串函数
2008-12-29 12:26 14581. ASC(X),Chr(X):转换字 ... -
VB常用函数
2008-12-29 12:25 22631. Time 返回系统时钟的当前时间。 Date 返回 ... -
VB使用*.res资源文件
2008-12-29 12:23 1621你一定也常常因苦于无法组织自己程序中大量的picture,而头 ... -
在不同的模式下实现定时关闭计算机
2008-12-29 12:20 837Option Explicit Const SM_CLEANB ... -
强制关闭指定QQ号
2008-12-29 12:19 1289'添加 Text1 Command1 ... -
VB读取武林外传内存地址
2008-12-29 12:18 2084一 模块代码 复制内容到剪贴板 代码: Option Expl ... -
怎么编程把用户名,密码提交到网页上的登录页?
2008-12-29 12:06 1420首先在程序中加入Webbrowser控件并加入引用 Micro ... -
在XP/2K 任务管理器的进程列表中隐藏当前进程
2008-12-29 12:05 1218新建一个模块,把以下代码复制进去,然后在load中调用即可实现 ... -
用VB制作IE工具条自定义按钮
2008-12-29 12:04 1168Private Sub UserControl_Resize( ... -
Webbrowser(Internet 控件)属性方法事件一览表
2008-12-29 11:56 4757想找个Webbrowser控件的详细使用手册,网上找了好久,都 ... -
使用vbs下载文件
2008-12-29 11:52 1510使用vbs下载文件 iLocal=LCase(Wscript. ... -
如何用VB制作半透明窗体?
2008-12-29 11:51 1652函数SetLayeredWindowAttributes ... -
vb api 控制 任务栏 桌面 托盘。。
2008-12-29 11:45 2069VB无疑是最先进的编程 ... -
VB程序实现文件拖放功能
2008-12-26 10:25 15121.新建一个模块,写入以 ...
相关推荐
你可以从里面了解到A5算法和RC4算法是如何用代码实现。 A5算法是一种流密码算法,最初由欧洲电信标准协会(ETSI)用于第二代(2G)移动通信系统中的GSM(Global System for Mobile Communications)网络。A5算法用于...
2、该资源代码实现的是《神经网络与深度学习》-michael中文版中network1和network2的python3.9版本,代码的准确性在mnist 手写数据集和 Divorce Predictors 数据集上得到验证。 3、本项目适合计算机相关专业(如计科...
QQ-TEA加解密工具代码,分析QQ报文特征和协议,解密本地QQ聊天
ios开发,如何使用Tea加密解密,以及加密后存储数据,如何正确解密
TEA(Tiny Encryption Algorithm) 是一种简单高效的加密算法,以加密解密速度快,实现简单著称。算法真的很简单,TEA算法每一次可以操作64-bit(8-byte),采用128-bit(16-byte)作为key,算法采用迭代的形式,推荐的...
源码实现了TEA加解密,MD5计算,HEX转TEXT,TEXT转HEX等。@阿木。
在研究JPEG压缩编码对图像数据压缩的基本原理的基础上,设计了JPEG图像压缩算法程序实现流程,利用 Python语言对程序进行了编写,并实现了对压缩质量进行控制,验证了JPEG压缩编码对图像数据压缩的可行性。
des算法加密任意文件,实现对文件的加解密,使用java代码实现的
遗传算法以一种群体中的所有个体为对象,并利用随机化...参数编码、初始群体的设定、适应度函数的设计、遗传操作设计、控制参数设定五个要素组成了遗传算法的核心内容,此程序利用Python实现遗传算法求函数最值问题。
反向传播算法python实现.
国密算法实现文件加密,用到了sm2,sm3,sm4算法,签名,验签,生成密钥对,加密解密,包括所有示例源码,delphi7可以编译运行。
计算机图形学的区域填充算法
传统的GN算法只适用于无向无权图的社区发现,通过对边介数进行调整得到无向有权图的GN算法实现
黑寡妇算法(BWO)-Python实现(可以直接访问Github下载) BWO 的灵感来自黑寡妇蜘蛛奇异的交配行为。 文章doi:https://doi.org/10.1016/j.engappai.2019.103249 项目来源为:...
Python实现邮箱(以QQ邮箱为例)自动化处理,包括自动发送、读取、删除、定时发送等等 目录 1 模块介绍与安装 2 利用Python发送邮件 2.1 发送一封简单的电子邮件 2.2 发送含HTML样式的电子邮件 2.3 发送带附件的...
斯巴达Python
python实现扫码验证,调用qq的api,通过查询扫码人加入的群中是否存在目标群,实现对使用人身份的校验。
利用sklearn生成样本数据,使用knn算法进行分类,实现可视化,使用python算法
本资源为基于Python的SUSAN边缘检测算法(最终展现只有边缘检测结果,不包含角点检测结果,不包含角点检测结果,不包含角点检测结果)。为避免不同环境导致代码无法运行,您可以前往我的文章中查看相关环境:...
大概写了个DES的加解密算法