小编zen*_*sel的帖子

为什么PyCrypto不使用默认IV?

我试图弄清楚为什么我的Python客户端和Ruby服务器对如何加密数据存在分歧.我在Ruby代码和我的代码中看到的唯一区别是它们没有指定初始化向量,因此它回退到所有\ x0的默认值

当我尝试在没有iv的情况下实例化PyCrypto时它会给我一个错误.这是一个例子:

from Crypto.Cipher import AES
test = "Very, very confidential data"
key = b'Thirty Two Byte key, made Beef y' 

gryp = AES.new(key, AES.MODE_CBC)
Run Code Online (Sandbox Code Playgroud)

(这个例子基本上是来自PyCrypto文档的示例代码而没有指定IV)文档说w/r/t IV"它是可选的,当它不存在时,它将被赋予全零的默认值." 但是我得到错误"ValueError:IV必须是16个字节长".

所以我可以指定IV,这不是问题,但我想弄清楚,如果它认为它不能使用默认值,如果我使用库的方式有其他错误.

python aes pycrypto

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

如何使用外键测试Django中的模型

我想确保我单独测试模型/对象而不是一个庞大的系统.

如果我有一个Order对象并且它有客户,Payments,OrderItems等的外键,并且我想测试Order功能,我需要为所有相关数据创建fixture,或者在代码中创建它.我认为我真正需要做的是嘲笑其他项目,但如果我对这些外键进行查询,我看不到一个简单(或可能)的解决方案.

常见的解决方案(灯具)并不能让我一次测试一个对象.我相信这部分是由我的应用程序所引起的方式在耦合.

我正在努力采用TDD作为我的主要工作方法,但是使用Django的方式,似乎你可以运行非常简单的单元测试,或者这些大规模的集成测试.

[编辑]更明确的例子,更谦虚

我的意思是我似乎只能进行琐碎的单元测试.我见过人们拥有非常好的测试和粒度模块.我确信其中一些可以追溯到糟糕的设计.

例:

我有一个模型调用Upsell,它链接到Product模型.然后我有一个选择模型,它是Upsell的孩子(你想要的是#1,#2,#3门后面的东西).

Upsell模型有几种方法可以导出从其选择中呈现模板所需的项目.最重要的一点是它为每个选择创建一个URL.它是通过一些字符串修改等来完成的.如果我想测试Upsell.get_urls()方法,我想让它不依赖于夹具中的选择值,我希望它不依赖于它的值固定装置中的产品.

现在我在setUp方法中填充db以进行测试,这与Django每次都支持事务的方式很有效,但只能在setUp和tearDown之外.除了一些模型设置起来相当复杂之外,这种方法效果相当不错,而实际上我只需要为它获取一个属性.

我不能给你一个例子,因为我无法完成它,但这是我现在正在做的事情.基本上我输入一个完整的订单,创建它附加的A/B实验,等等.这不包括所有由夹具设置的产品,类别等.这不是我所关心的额外工作,因为我甚至无法一次测试一个基于数据库的对象.下面的测试很重要,但它们是集成测试.我想通过分别测试每个项目来构建这样的东西.正如您所指出的,也许我不应该选择一个与数据库紧密相关的框架.是否存在任何类型的依赖注入?(超出我的测试范围,但代码本身也是如此)

class TestMultiSinglePaySwap(TestCase):
    fixtures = ['/srv/asm/fixtures/alchemysites.json','/srv/asm/fixtures/catalog.json','/srv/asm/fixtures/checkout_smallset.json','/srv/asm/fixtures/order-test-fixture.json','/srv/asm/fixtures/offers.json']

def setUp(self):
    self.o = Order()
    self.sp = SiteProfile.objects.get(pk=1)
    self.c = Customer.objects.get(pk=1)
    signals.post_save.disconnect(order_email_first, sender=Order)
    self.o.customer = self.c
    p = Payment()
    p.cc_number = '4444000011110000'
    p.cc_exp_month = '12'
    p.cc_type = 'V'
    p.cc_exp_year = '2020'
    p.cvv2 = '123'
    p.save()
    self.o.payment = p
    self.o.site_profile = self.sp
    self.o.save()
    self.initial_items = []
    self.main_kit = Product.objects.get(pk='MOA1000D6')
    self.initial_items.append(self.main_kit)
    self.o.add_item('MOA1000D6', 1, False)
    self.item1 = Product.objects.get(pk='MOA1041A-6')
    self.initial_items.append(self.item1)
    self.o.add_item('MOA1041A-6', 1, False) …
Run Code Online (Sandbox Code Playgroud)

django unit-testing mocking django-models

9
推荐指数
2
解决办法
5623
查看次数

在nodejs中相当于Python的“棘手”

pickle函数是Python的功能之一,它允许您存储任何任意内容,并将其完全恢复为原始形式。一种常见用法是获取一个完全实例化的对象并将其腌制以备后用。就我而言,我有一个不可序列化的AMQP消息对象,我希望能够将其存储在会话存储中并检索它(可以用pickle进行处理)。主要区别在于,我需要在对象上调用方法,而不仅仅是查找数据。

但是该项目位于nodejs中,并且似乎所有节点的低级库都必须有某种方法来保存该对象,以便它可以在Web调用之间持久存在。

用例是一个网页接收RabbitMQ消息并显示从中获得的信息。在执行该消息之前,我不想确认该消息。我通常只是将数据保存为会话状态,但这不是一个选择,除非我能以某种方式将其保存为原始形式。

python amqp node.js

6
推荐指数
2
解决办法
2986
查看次数

处理南方的PostgreSQL串行字段类型

我正在使用遗留数据库,它以db方式执行一些有意义的事情,但不确定如何在Django中表示它们以便South和Django本身可以处理它们.

我有一个PartCode作为键的Parts表我有一个Vendor表,VendorCode作为键

我有一个零件和供应商的FK的PartsVendor表,以及关于这种关系的其他信息.我正在使用"通过"参数,因此它独立,但它使用PartCode + VendorCode作为复合键,Django不支持.只有在使用南方或像dumpdata这样的功能时,才能看到主键才会遇到问题.但是,这些都是相当大的问题.

我的临时解决方案是只添加一个_id字段作为AutoField并在Postgres中添加一个串行字段,它可以正常工作,但是当使用South时,它会阻塞default = False和NOT NULL的事实.

我已经走上了尝试编写自定义字段的道路,但这似乎是一个死胡同,因为我实际上并没有改变关于字段类型的任何内容.

django postgresql django-south

5
推荐指数
1
解决办法
834
查看次数

如何使用Actionscript 3设置SimpleButton的状态

我有一个由我们的设计师创建的.fla文件,他创建了一组SimpleButtons,我已连接到视频播放器.现在,如果与之关联的视频正在播放,我需要将按钮的状态设置为"结束".

按钮在图形上有点复杂,所以它不是我想用AS重新创建的东西.

有没有办法在视频播放时设置myButton.upstate = myButton.overstate?我在这里看到的问题似乎让我相信SimpleButton不太适合操纵.我已经看过这里用AS3从头开始创建它的例子,但重建这些按钮将是一项艰巨的任务.

我可以做到这一点,但我不想在切线上除非没有别的方法可以做到这一点,因为它似乎是"似乎"应该是简单的事情之一.

flash actionscript-3

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