小编Eli*_*les的帖子

如何使用Python的加密模块加载RSA公钥

我正在尝试使用加密模块加载公钥,这就是密钥的样子:

>>> print(pubkey)
-----BEGIN RSA PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+6gvHdCUCjnc4hSMwbdIIspk4
69pVAzjjb8tDJsCH/QpiK9vXe4nDZ7p9kiw2ACw0fkWaPnApKBwXNB9Nd9Sf+XFt
cIzdqKKBcAqZZCu2pA729amNRug9DoZdkstaBG+VfTxXhdzQRSTxxqJQWgdV8ejK
kt4D1M6pAiTkAyD0eQIDAQAB
-----END RSA PUBLIC KEY-----
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下load_pem_public_key()方法加载它:

>>> from cryptography.hazmat.backends import default_backend
>>> from cryptography.hazmat.primitives.serialization import load_pem_public_key
>>> load_pem_public_key(pubkey, default_backend())
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/elias/.virtualenvs/ckpypkg/local/lib/python2.7/site-packages/cryptography/hazmat/primitives/serialization.py", line 24, in load_pem_public_key
    return backend.load_pem_public_key(data)
  File "/home/elias/.virtualenvs/ckpypkg/local/lib/python2.7/site-packages/cryptography/hazmat/backends/multibackend.py", line 285, in load_pem_public_key
    return b.load_pem_public_key(data)
  File "/home/elias/.virtualenvs/ckpypkg/local/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 1376, in load_pem_public_key
    self._handle_key_loading_error()
  File "/home/elias/.virtualenvs/ckpypkg/local/lib/python2.7/site-packages/cryptography/hazmat/backends/openssl/backend.py", line 1595, in _handle_key_loading_error
    raise ValueError("Could not unserialize key data.")
ValueError: …
Run Code Online (Sandbox Code Playgroud)

python cryptography

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

如何让PLY忽略正则表达式的情况?

我正在研究一个简单的翻译器,从SQL INSERT语句到数据集XML文件,与DbUnit一起使用.

我目前的定义如下:

def t_INSERT(token):
    r'INSERT\s+INTO'
    return token
Run Code Online (Sandbox Code Playgroud)

现在,我要支持SQL的不区分大小写的命令,例如,接受所有的INSERT INTO,Insert Into,insert into并且iNsErT inTO为同样的事情.

我想知道是否有一种方法可以使用PLY re.I以便它会忽略这种情况,或者是另一种方法来编写我不熟悉的规则.

python regex ply

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

如何在JSF中使用EL内部的HTML字符实体?

我想在组件的value属性中使用em dashh:link.

这是我的尝试(当前不起作用):

<h:link value="#{somethingHere} &mdash; #{anotherHere}">
    <f:param name="identifier" value="#{somethingHere.identifier}" />
</h:link>
Run Code Online (Sandbox Code Playgroud)

这导致FaceletsException:

FaceletException: Error Parsing /index.xhtml: Error Traced[line: 13]
                The entity "mdash" was referenced, but not declared.
at com.sun.faces.facelets.compiler.SAXCompiler.doCompile(SAXCompiler.java:394)
...
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用HTML锚点,但是有没有办法在EL表达式中执行它?这样做的正确方法是什么?

facelets jsf-2

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

处理这个问题的正确设计是什么?

我正在开发一个遗留的Java应用程序,它可以解决"水果"和"蔬菜"问题.它们在内部被视为不同的东西,因为它们没有共同的所有方法/属性,但是很多东西都完全类似于它们.

所以,我们有很多方法doSomethingWithAFruit(Fruit f)和doSomethingWithAVegetable(Veg v),即使用正确的doOtherStuffWithAFruit(Fruit f)/doOtherStuffWithAVeg(Veg v).这些非常相似,只不过用水果做事的方法只能用水果做方法,对蔬菜做同样的事情.

我想重构这个以减少重复,但我不确定实现这一目标的最佳方法是什么.我已经阅读了一些关于某些设计模式的内容,但我不知道它是否让我更清楚.(我可以识别我使用的代码中的一些模式,但我真的不知道何时应该使用模式来改进周围的事情.也许我应该阅读更多有关重构自身的内容......)

我在考虑这两个选项:

1.创建一个可以具有Fruit或Vegetable实例的类,并将其传递给方法,尝试最小化重复.它会是这样的:

public void doSomething(Plant p) {
   // do the stuff that is  common, and then...
   if (p.hasFruit()) {
       doThingWithFruit(p.getFruit());
   } else {
       doThingWithVegetable(p.getVegetable());
   }
}
Run Code Online (Sandbox Code Playgroud)

这会让事情变得更好,但我不知道......它仍然感觉不对.

2.我以为对方选择是摆在水果和蔬菜的接口与通常给他们的东西,并用它来各地传递.我觉得这是更清洁的方法,虽然我需要使用instanceof和浇铸到水果/蔬菜,当它需要特定的东西.

那么,我还能在这做什么呢?这些方法的缺点是什么?

更新:请注意,问题有点简化,我正在寻找使用"植物"做事的方法,即主要"使用"它们而不是对它们做事的代码.话虽如此,我所指的那些类似方法不能在"Plants"类中,并且它们通常有另一个参数,如:

public void createSomethingUsingFruit(Something s, Fruit f);
public void createSomethingUsingVegetable(Something s, Vegetable v);
Run Code Online (Sandbox Code Playgroud)

也就是说,除了水果/蔬菜之外,这些方法还有其他问题,并且不适用于任何水果/蔬菜类.

更新2:这些方法中的大多数代码只从Fruit/Vegetable对象中读取状态,并根据相应的类型创建其他类的实例,存储在数据库中等等 - 从我对回答中的问题回答我认为这很重要.

java oop refactoring design-patterns

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

条件#{facesContext.postback而不是facesContext.renderResponse}是什么意思?

当我遇到以下条件时,我正在OmniFaces Showcase应用程序中检出此模板的代码:p:selectOneMenu

disabled="#{facesContext.postback and not facesContext.renderResponse}"
Run Code Online (Sandbox Code Playgroud)

通过使用该应用程序,似乎从未禁用过selectOneMenu,那么这段代码实际上是做什么的?

我知道,facesContext.postback是true每当该页面是从POST请求的结果JSF组件(产生的commandButton / commandLink等),但什么是通常的预期状态facesContext.renderResponse时,在查看评估?

更新:哎呀,刚才我看到了一条评论:除了渲染响应外,它们在其他阶段被禁用,因为他们抱怨即使没有表单也无法设置模型值。

因此,我猜想在Faces生命周期中会多次评估条件,并且禁用组件直到达到最后一个状态(renderResponse)为止,当facesContext.renderResponse评估为时true,整个表达式的评估结果为false,然后启用了组件。那是对的吗?

el jsf-2

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

如何在ISAPI筛选器中设置多个cookie

我遇到了在ISAPI过滤器中设置多个cookie的问题.我想将HttpOnly标志添加到所有cookie中.

所以,在我的第一次尝试中,我分割了cookie值并添加了HttpOnly标志,然后我将它们组合成一个字符串,最后调用pResponse->SetHeader(pfc, "Set-Cookie:", szNewValue),浏览器只获得第一个cookie值.

第一次尝试代码:

cbValue = sizeof(szValue) / sizeof(szValue[0]);
        if (pResponse->GetHeader(pfc, "Set-Cookie:", szValue, &cbValue))
        {
            char szNewValue[MAX_URI_SIZE] = "";
            char* token = NULL;
            char* context = NULL;
            char delim[] = ",";

            // szValue format like 
            // "Language=en; expires=Sat, 15-Jul-2113 02:46:27 GMT; path=/; HttpOnly,Language=en; expires=Sat, 15-Jul-2113 02:46:27 GMT; path=/; HttpOnly"
            // After first split
            // token = "Language=en; expires=Sat"
            // context = " 15-Jul-2113 02:46:27 GMT; path=/; HttpOnly,Language=en; expires=Sat, 15-Jul-2113 02:46:27 GMT; path=/; HttpOnly" …
Run Code Online (Sandbox Code Playgroud)

c++ iis cookies winapi isapi

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

Scrapy中'crawl.py'中"set_crawler"和"from_crawler"的功能是什么?

我无法理解这些功能.如果我继承了Spider或者CrawlSpider,我应该覆盖那些函数.如果没有,那么为什么呢?

@classmethod
def from_crawler(cls, crawler, *args, **kwargs):
    spider = super(CrawlSpider, cls).from_crawler(crawler, *args, **kwargs)
    spider._follow_links = crawler.settings.getbool(
                                   'CRAWLSPIDER_FOLLOW_LINKS', True)
    return spider

def set_crawler(self, crawler):
    super(CrawlSpider, self).set_crawler(crawler)
    self._follow_links = crawler.settings.getbool(
                                 'CRAWLSPIDER_FOLLOW_LINKS', True)
Run Code Online (Sandbox Code Playgroud)

python scrapy

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

在JSF 1.2中使用错误编码的POST参数

我在我的Web应用程序(JSF 1.2,Spring和Tomcat 7)中遇到charset编码问题,而且我已经用尽了测试内容以查看它出错的地方.

每当我提交类似'çã'的内容时,我会得到'çã':这意味着我在UTF-8上发布的数据在JSF生命周期的某个地方被转换为ISO-8859-1.

我知道错误的转换是UTF-8到ISO-8859-1,因为它的输出相同:

System.out.println(new String("çã".getBytes("UTF-8"), "ISO-8859-1"));
Run Code Online (Sandbox Code Playgroud)

我相信错误的转换是在JSF生命周期中的某个地方(它可以在之前吗?)因为我在我的MB中设置了一个验证器:

public void debugValidator(FacesContext context, UIComponent component,
        Object object) throws ValidationException {
    System.out.println("debug validator:");
    System.out.println(object);
    System.out.println("\n");
    throw new ValidationException("DEBUG: " + object.toString());
}
Run Code Online (Sandbox Code Playgroud)

并且它的消息返回:"DEBUG:çã"

  • 我在我的所有.xhtml页面中都有第一行<?xml version="1.0" encoding="UTF-8"?>.
  • 我正在使用Facelets,根据BalusC的文章默认使用UTF-8
  • 所以它不需要,但我设置无论如何,Spring CharacterEncodingFilter在我的web.xml中将请求字符编码设置为UTF-8.
  • 我放入URIEncoding="UTF-8"Tomcat的server.xml文件,只是为了保证
  • 这不是我的浏览器的错,它在控制台中打印相同的东西,我的环境都是UTF-8.

你知道我还能测试什么吗?可能是我的错误假设?

提前致谢!

jsf facelets utf-8 character-encoding tomcat7

4
推荐指数
1
解决办法
7548
查看次数

如何使StringTemplate V4忽略&lt;作为分隔符?

我正在使用StringTemplate V4在我的项目中生成一些HTML代码。我需要有HTML格式在我的模板,所以使用默认的分隔符<,并>会非常尴尬。

因此,我正在创建一个将定界符作为参数传递的组(如本问题所建议),但它根本行不通。

这是我的测试代码:

public void testTemplate() {
    char sep = '$';
    STGroup stGroup = new STGroupString("temp",
            "<html>hello, $name$!</html>", sep, sep);
    System.out.println("Group created");
    ST st = stGroup.getInstanceOf("temp");
    if (st == null) {
        System.out.println("Failed to get template!");
    } else {
        st.add("name", "Guest");
        System.out.println("Template initialized correctly");
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出:

temp 1:1: invalid character '<'
temp 1:5: invalid character '>'
temp 1:1: garbled template definition starting at 'html'
temp 1:6: garbled template definition starting at 'hello'
temp …
Run Code Online (Sandbox Code Playgroud)

java stringtemplate stringtemplate-4

4
推荐指数
1
解决办法
3061
查看次数

在 AWS Lambda 函数上运行 aws S3 cli 命令时令牌无效

我附加了一个 lambda 函数,在其中运行命令aws ls s3://bucketname.com,该函数失败并出现错误:

botocore.exceptions.ClientError: An error occurred (InvalidToken) when calling the ListObjectsV2 operation: The provided token is malformed or otherwise invalid.
Run Code Online (Sandbox Code Playgroud)

我一直在努力找出问题所在,这看起来像是权限问题吗?然而,附加的 IAM 角色有一个内联策略,本质上允许一切:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Test0",
            "Effect": "Allow",
            "Action": [
                "s3:*"
            ],
            "Resource": [
                "arn:aws:s3:::bucketname.com/*",
                "arn:aws:s3:::bucketname.com"
            ]
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试按照另一个 SO 问题中的建议aws --region eu-west-3 s3 ls s3://bucketname.com在命令 ( )中指定区域,但我仍然遇到相同的错误。

编辑:如果我添加选项--debug,我会看到:

2019-11-26 11:46:48,292 - MainThread - botocore.endpoint - DEBUG - Making request for OperationModel(name=ListObjectsV2) with …
Run Code Online (Sandbox Code Playgroud)

amazon-s3 amazon-web-services amazon-iam aws-lambda

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