问题列表 - 第28642页

谁能解释为什么我的加密++解密文件短16个字节?

为了能够将AES加密文本作为std::istream解析器组件提供给我,我试图创建一个std::streambuf包含vanilla crypto ++加密/解密的实现.

main()函数调用以下函数来比较我的包装器和vanilla实现:

  • EncryptFile() - 使用我的streambuf实现加密文件
  • DecryptFile() - 使用我的streambuf实现解密文件
  • EncryptFileVanilla() - 使用vanilla crypto ++加密文件
  • DecryptFileVanilla() - 使用vanilla crypto ++解密文件

问题是虽然加密文件由EncryptFile()和创建的EncryptFileVanilla()相同.创建的解密文件DecryptFile()不正确,比由创建的文件短16个字节DecryptFileVanilla().可能并非巧合的是,块大小也是16.

我认为问题必须在CryptStreamBuffer::GetNextChar(),但我一直在盯着它和加密++文档几个小时.

有人可以帮忙/解释一下吗?

任何其他关于我的std::streambuf实施如何蹩脚或天真的评论也欢迎;-)

谢谢,

汤姆

// Runtime Includes
#include <iostream>

// Crypto++ Includes
#include "aes.h"
#include "modes.h"      // xxx_Mode< >
#include "filters.h"    // StringSource and
                        // StreamTransformation
#include "files.h"

using namespace std;

class CryptStreamBuffer: public std::streambuf {

public:

    CryptStreamBuffer(istream& encryptedInput, CryptoPP::StreamTransformation& …
Run Code Online (Sandbox Code Playgroud)

c++ encryption crypto++

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

C++和D之间的链接兼容性

D容易接口C.

D同样容易接口C++,但(并且它很大但是)C++需要非常微不足道.代码不能使用:

  • 命名空间
  • 模板
  • 多重继承
  • 将虚拟与非虚拟方法混合使用
  • 更多?

我完全理解继承限制.然而,其余的,感觉像人为限制.现在我不想std::vector<T>直接使用,但我真的希望能够std::vector<int>作为一个外部模板链接.

C++接口页有这个特别令人沮丧的评论.

D模板与C++模板几乎没有共同点,并且不太可能找到任何合理的方法以与D链接兼容的方式表达C++模板.

这意味着可能永远无法从D中访问C++ STL和C++ Boost.

不可否认,我可能永远不需要std::vector编码D,但我喜欢使用QT提升.

那是什么交易.为什么C++在D中表达非平凡的类很难?是否值得添加一些特殊的注释或某些东西来表达至少名称空间?


更新:"D在工程中有命名空间支持"来自Walter Bright.

c++ templates d

20
推荐指数
2
解决办法
1687
查看次数

如何通过拥有相同的ID进行分组?

我想要从以下架构购买产品X和Y和Z的customerid:

销售(customerid,productName,rid);

我可以做交叉点:

select customerid from sales where productName='X' 
INTERSECT 
select customerid from sales where productName='X' 
INTERSTECT
select customerid from sales where productName='Z'
Run Code Online (Sandbox Code Playgroud)

这是我能做的最好的吗?

sql postgresql

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

由于Django不活动,如何使会话到期?

我们的Django应用程序具有以下会话管理要求.

  1. 当用户关闭浏览器时,会话将过期.
  2. 会话在一段时间不活动后过期.
  3. 检测会话何时因不活动而到期并向用户显示适当的消息.
  4. 在非活动期结束前几分钟警告即将到来的会话到期的用户.连同警告,为用户提供扩展会话的选项.
  5. 如果用户正在应用程序中处理不涉及发送到服务器的请求的长业务活动,则会话不得超时.

在阅读了文档,Django代码和一些与此相关的博客文章后,我提出了以下实现方法.

要求1
通过将SESSION_EXPIRE_AT_BROWSER_CLOSE设置为True,可以轻松实现此要求.

要求2
我已经看到一些建议使用SESSION_COOKIE_AGE来设置会话到期时间.但是这种方法存在以下问题.

  • 即使用户正在使用该应用程序,该会话也始终在SESSION_COOKIE_AGE结束时到期.(这可以通过使用自定义中间件在每个请求上将会话到期设置为SESSION_COOKIE_AGE来防止,或者通过将SESSION_SAVE_EVERY_REQUEST设置为true来保存每个请求的会话.但是由于使用了SESSION_COOKIE_AGE,下一个问题是不可避免的.)

  • 由于cookie的工作方式,SESSION_EXPIRE_AT_BROWSER_CLOSE和SESSION_COOKIE_AGE是互斥的,即cookie在浏览器关闭或指定的到期时间到期.如果使用SESSION_COOKIE_AGE并且用户在cookie过期之前关闭浏览器,则会保留cookie并重新打开浏览器将允许用户(或任何其他人)进入系统而无需重新进行身份验证.

  • Django仅依赖于存在的cookie来确定会话是否处于活动状态.它不会检查与会话一起存储的会话到期日期.

可以使用以下方法来实现此要求并解决上述问题.

  • 不要设置SESSION_COOKIE_AGE.
  • 将会话的到期日期设置为每个请求的"当前时间+不活动时间段".
  • 覆盖SessionMiddleware中的process_request并检查会话是否到期.如果会话已过期,请将其丢弃.

要求3
当我们检测到会话已过期时(在上面的自定义SessionMiddleware中),在请求上设置一个属性以指示会话到期.此属性可用于向用户显示适当的消息.

要求4
使用JavaScript检测用户不活动,提供警告以及扩展会话的选项.如果用户希望扩展,则向服务器发送保持活动脉冲以扩展会话.

要求5
使用JavaScript检测用户活动(在长期业务操作期间)并向服务器发送保持活动脉冲以防止会话过期.


上面的实现方法似乎很精细,我想知道是否有一个更简单的方法(特别是对于要求2).

任何见解都将受到高度赞赏.

python django cookies session

84
推荐指数
5
解决办法
5万
查看次数

Django:如何重定向帖子并传递帖子数据

在Django views.py文件中处理POST请求时,我有时需要将其重定向到另一个URL.我重定向到的这个url是由同一个Django views.py文件中的另一个函数处理的.有没有办法做到这一点并维护原始的POST数据?

更新:更多解释为什么我想这样做.我有两个网络应用程序(我们称之为AppA和AppB),它接受用户输入文本字段的数据.当用户单击"提交"时,将处理数据并显示详细结果.AppA和AppB期望不同类型的数据.有时,用户错误地将AppB类型数据发布到AppA.当发生这种情况时,我想将它们重定向到AppB并显示AppB结果,或者至少将它们填入他们输入AppA的数据中.

也:

  • 客户需要两个独立的应用程序,而不是将它们合并为一个.

  • 我无法显示代码,因为它属于客户端.

更新2:我已经确定KISS是这里最好的原则.我将这两个应用程序合并为一个,使事情更简单,更健壮; 我应该能够说服客户,这也是最好的方式.感谢所有的好评.如果我要按照描述维护两个应用程序,那么我认为会话就是这样做的方式 - 感谢Matthew J Morrison的建议.感谢Dzida,他的评论让我想到了设计和简化.

django

73
推荐指数
5
解决办法
7万
查看次数

如何获取当前记录的ID?

另一个CakePHP框架问题......

我怎样才能获得当前记录的ID?

cakephp

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

java:在BigInteger的情况下如何进行循环工作

我想将用户的输入作为Big-Integer并将其操作为For循环

BigInteger i;
for(BigInteger i=0; i<=100000; i++) {
    System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)

但它不会起作用

有谁能够帮我.

java biginteger

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

int argc,char*argv []是什么意思?

在许多C++ IDE和编译器中,当它为您生成主函数时,它看起来像这样:

int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)

当我在没有IDE的情况下编写C++代码时,只需使用命令行编译器,我输入:

int main()
Run Code Online (Sandbox Code Playgroud)

没有任何参数.这意味着什么,对我的计划至关重要?

c++ parameters argv command-line-arguments argc

476
推荐指数
8
解决办法
81万
查看次数

如何在linq中使用IN运算符

我正在查询视图并使用名为status的列过滤结果.我想查询它,以便我可以通过使用IN运算符来搜索具有不同状态的行,就像我在SQL中所做的那样.

如此:

SELECT*FROM VIEW WHERE状态('....','.....')

我怎样才能做到这一点?

c# linq linq-to-objects

8
推荐指数
1
解决办法
7016
查看次数

为什么我的Type.GetFields(BindingFlags.Instance | BindingFlags.Public)不起作用?

我的代码可以看到非公开成员,但不能看到公共成员.为什么?

FieldInfo[] publicFieldInfos =
    t.GetFields(BindingFlags.Instance | BindingFlags.Public);
Run Code Online (Sandbox Code Playgroud)

没有回来.

注意:我正在尝试获取抽象类的属性以及具体类.(并阅读属性).

MSDN示例使用2个标志,(BindingFlags.Instance | BindingFlags.Public)但下面的迷你继承示例没有.

private void RunTest1()
{
    try
    {
        textBox1.Text = string.Empty;

        Type t = typeof(MyInheritedClass);

        //Look at the BindingFlags *** NonPublic ***

        int fieldCount = 0;

        while (null != t)
        {
            fieldCount += t.GetFields(BindingFlags.Instance |
            BindingFlags.NonPublic).Length;

            FieldInfo[] nonPublicFieldInfos = t.GetFields(BindingFlags.Instance |
            BindingFlags.NonPublic);

            foreach (FieldInfo field in nonPublicFieldInfos)
            {
                if (null != field)
                {
                    Console.WriteLine(field.Name);
                }
            }

            t = t.BaseType;
        }

        Console.WriteLine("\n\r------------------\n\r");

        //Look at the BindingFlags *** Public *** …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection

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