小编nna*_*lle的帖子

AES - 使用Pycrypto(python)加密加密(node-js)/解密

我正在写这个问题+答案,因为我经历了很多努力(可能是因为缺乏经验),迷失了许多不同的加密/解密节点或python的方法.

我想也许我的案子可以帮助将来的人.

我需要做什么:

  • 从表单获取数据,使用Crypto(node-js)加密它们
  • 将加密数据传递给Python并使用PyCrypto对其进行解密.

我选择使用AES加密.

这是我开始的方式(我不会经历我尝试过的所有事情):

  • 我按照本页末尾的示例进行操作

    在我的情况下给出了:

    (这可能是javascript和coffeescript之间非常糟糕的混合)

    crypto = require "crypto"
    [...]
    key = "mykeywhatever"
    cipher = crypto.createCipher('aes192', key)
    cipher.update('string i want to encode', 'binary', 'hex')
    encoded_string = cipher.final('hex')
    [...]
    
    Run Code Online (Sandbox Code Playgroud)

    这对我的字符串编码非常好.

  • 然后我编写了我的python脚本来解密这个字符串,使用PyCrypto的github页面上的自述文件:

    from Crypto.Cipher import AES
    [...]
    my_string = data_coming_from_rabbitmq
    obj = AES.new('mykeywhatever', AES.MODE_CBC)
    obj.decrypt(ciphertext)
    [...]
    
    Run Code Online (Sandbox Code Playgroud)

    这显然不起作用:在自述文件中有一个IV,但由于我没有在节点脚本中给出一个,为什么我要在python中给一个?

经过更多的谷歌搜索,我了解到节点的Crypto使用OpenSSL,而PyCrypto显然没有.所以我调查了一下,找到了那些页面:

事情变得复杂,没有人做同样的事情来解密数据,我迷路了,并寻求帮助.

答案就是我的同事和我想出来的(好吧,主要是我的corworker).

python cryptography pycrypto node.js

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

没有任何消息的Selenium随机超时异常

这是我正在尝试做的事情,而且大部分时间我都是成功的:基本上我正在登录网站,然后等待一个类进入源代码,然后处理源代码.

我得到的例外:

Traceback (most recent call last):
File "foo.py", line 495, in <module>
report(login, password)
File "foo.py", line 430, in report
data = bar(login, password)
File "foo.py", line 113, in 
ui.WebDriverWait(browser, 10).until(lambda browser: browser.find_elements_by_class_name("the-class-i-want"))
File "/Library/Python/2.7/site-packages/selenium/webdriver/support/wait.py", line 71, in until
raise TimeoutException(message)
selenium.common.exceptions.TimeoutException: Message: '' 
Run Code Online (Sandbox Code Playgroud)

这是代码:

from selenium import webdriver
import contextlib
from selenium.webdriver.common.keys import Keys
import selenium.webdriver.support.ui as ui
from selenium.webdriver.support.wait import WebDriverWait

with contextlib.closing(webdriver.PhantomJS('phantomjs')) as browser:
    browser.get('mywebsite')
    login_form = browser.find_element_by_id('login-form')
    email = browser.find_element_by_name('login')
    password = browser.find_element_by_name('password')
    email.send_keys(login) …
Run Code Online (Sandbox Code Playgroud)

python selenium timeout

9
推荐指数
1
解决办法
4462
查看次数

标签 统计

python ×2

cryptography ×1

node.js ×1

pycrypto ×1

selenium ×1

timeout ×1