小编Cri*_*tin的帖子

在Python中使用RSA加密文件

我正在使用PyCrypto使用RSA实现文件加密.

我知道这有点不对,首先是因为RSA非常慢,其次是因为PyCrypto RSA只能加密128个字符,所以你必须以128个字符的块来爆炸文件.

这是到目前为止的代码:

from Crypto.PublicKey import RSA

file_to_encrypt = open('my_file.ext', 'rb').read()
pub_key = open('my_pub_key.pem', 'rb').read()
o = RSA.importKey(pub_key)

to_join = []
step = 0

while 1:
    # Read 128 characters at a time.
    s = file_to_encrypt[step*128:(step+1)*128]
    if not s: break
    # Encrypt with RSA and append the result to list.
    # RSA encryption returns a tuple containing 1 string, so i fetch the string.
    to_join.append(o.encrypt(s, 0)[0])
    step += 1

# Join the results.
# I hope the \r\r\r sequence …
Run Code Online (Sandbox Code Playgroud)

python encryption public-key-encryption

13
推荐指数
1
解决办法
2万
查看次数

在数据库中存储用户和密码

我正在创建一个用户+密码的软件.在识别之后,用户可以访问一些半公共服务,但也加密一些只有用户可以访问的文件.

如果可能,用户必须按原样存储,无需修改.在auth之后,只要软件正在运行,用户和密码就会保存在内存中(我不知道是否可以).

问题是我应该如何将这个用户+密码组合存储在一个可能不安全的数据库中?

我真的不明白我应该揭露什么.

假设我创建了一个这样的增强键:

salt = random 32 characters string (is it okay?)
key = hash(usr password + salt)
for 1 to 65000 do
  key = hash(key + usr password + salt)

我应该在数据库中存储[纯文本用户],[增强密钥]和[盐]吗?

另外,我应该使用什么来加密(使用AES或Blowfish)每次使用新密码的某些文件?我应该生成一个新的盐并使用(存储在程序的内存中的密码+盐)创建一个新的增强密钥?在这种情况下,如果我将加密文件存储在数据库中,我应该只存储盐.数据库与我存储用户+密码组合的位置相同.

如果有人可以生成密钥,则只能对文件进行解密,但他不知道密码.对 ?

我使用Python和PyCrypto,但它并不重要,一般的例子就好了.我已经阅读了一些类似的问题,但它们并不是很明确.

非常非常感谢你!

python security passwords

10
推荐指数
1
解决办法
3015
查看次数

Qt在场景/视图的中心添加项目

问候,

我正在尝试将QGraphicsItem完全添加到当前屏幕的中心.
我的QGraphicsScene非常大(10k X 10K),所以QGraphicsView无法完全显示它,还有滚动条.

我找不到任何函数来返回我当前屏幕的矩形,我在所有QGraphicsScene和QGraphicsView函数中搜索.
有返回场景rect的函数(它返回一个矩形10k X 10k但它没用)并且有返回鼠标位置的函数,但是我需要移动鼠标并单击菜单以便鼠标不再在里面场景和物品将在可见空间外生成......

非常感谢你.

qt qgraphicsview qgraphicsscene

3
推荐指数
1
解决办法
5640
查看次数

遍历表示实际操作的图表

问候,

谁能告诉我用什么算法来遍历这样的有向无环图/图:

防爆.图节点:A,B,C,D1,D2,D3,E
图边:A→B,B→C,C→D1,C→D2,C→D3,D1→E,D2→E,D3→E

遍历是这样的:

A→B→C→D1,然后C→D2,然后是C→D3,
之后,它们连接:D1→E,D2→E,D3→E

我的图表代表实时操作.大多数操作都是线性的,但是当操作按条件分割时,每个分割(例如节点C分裂为D1,D2和D3)等待所有操作在它们再次加入之前完成(例如节点D1,D2和D3在节点E处连接) )

我需要在我的节点上进行操作,并按照这个确切的顺序调用每个操作.

我使用Python和pygraph,但如果你想发布一些算法,你可以使用任何语言.

也许它是这个算法的标准名称,比如深度优先搜索,Dijkstra算法,爬山,我不知道?...

非常非常感谢你 !

python diagram graph

3
推荐指数
1
解决办法
144
查看次数

Qt动态布局

我正在尝试以缩略图模式实现文件浏览器之类的布局.这些项目位于网格中,它们之间的距离固定,当您调整主窗口大小时,项目会重新定位以适合.

例如,在一个小窗口上,您有:

i1 i2 i3
j1 j2 j3
k1 k2 k3

但是当窗口更宽时,项目变为:

i1 i2 i3 j1
j2 j3 k1 k2
k3

如果你使窗户更宽,项目将变为:

i1 i2 i3 j1 j2
j3 k1 k2 k3

我试图尽可能简单地实现它,也许只使用默认类?...

如果您放置无限数量的项目,HBoxLayout不会溢出; 他们只是无限排队.

GridLayout无法帮助,因为在您首先放置项目后,在窗口调整大小后,您必须清理布局,重新计算项目数,使用新订单重新填充布局.它不会自动重新定位项目.

另一种方法是将项目放在TableWidget,Qt3样式中.但那是一样的; 在窗口调整大小后,您已计算新窗口中适合的项目数,清理表格并重新填充.

还有固定位置方法.你把物品放在固定的位置,并在每个窗口调整大小后移动它们......这很令人头疼.

有没有人尝试这样的东西 - 探险家或图像浏览器?你是怎么解决这个问题的?

qt pyqt

3
推荐指数
1
解决办法
520
查看次数

Foundation.js + Backbone.js

有没有人尝试使用Backbone.js(最新的1.1)与基金会的UI(最新的5.2)?我需要使用响应式菜单和Abide验证(都使用Foundation Javascript)

我渲染视图时无法重新初始化Foundation JS元素,因为我的容器中的所有元素都被销毁,或者从一个地方移动到另一个地方,而Foundation不会识别它们.

我尝试$("#container").foundation()从每个Backbone视图中调用每个初始化函数,但这似乎不起作用.

有谁知道如何初始化基金会超过一次,或让它看到新的渲染元素?

javascript backbone.js zurb-foundation

2
推荐指数
1
解决办法
1177
查看次数