为了能够将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) 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.
我想要从以下架构购买产品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)
这是我能做的最好的吗?
我们的Django应用程序具有以下会话管理要求.
在阅读了文档,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来确定会话是否处于活动状态.它不会检查与会话一起存储的会话到期日期.
可以使用以下方法来实现此要求并解决上述问题.
要求3
当我们检测到会话已过期时(在上面的自定义SessionMiddleware中),在请求上设置一个属性以指示会话到期.此属性可用于向用户显示适当的消息.
要求4
使用JavaScript检测用户不活动,提供警告以及扩展会话的选项.如果用户希望扩展,则向服务器发送保持活动脉冲以扩展会话.
要求5
使用JavaScript检测用户活动(在长期业务操作期间)并向服务器发送保持活动脉冲以防止会话过期.
上面的实现方法似乎很精细,我想知道是否有一个更简单的方法(特别是对于要求2).
任何见解都将受到高度赞赏.
在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,他的评论让我想到了设计和简化.
我想将用户的输入作为Big-Integer并将其操作为For循环
BigInteger i;
for(BigInteger i=0; i<=100000; i++) {
System.out.println(i);
}
Run Code Online (Sandbox Code Playgroud)
但它不会起作用
有谁能够帮我.
在许多C++ IDE和编译器中,当它为您生成主函数时,它看起来像这样:
int main(int argc, char *argv[])
Run Code Online (Sandbox Code Playgroud)
当我在没有IDE的情况下编写C++代码时,只需使用命令行编译器,我输入:
int main()
Run Code Online (Sandbox Code Playgroud)
没有任何参数.这意味着什么,对我的计划至关重要?
我正在查询视图并使用名为status的列过滤结果.我想查询它,以便我可以通过使用IN运算符来搜索具有不同状态的行,就像我在SQL中所做的那样.
如此:
SELECT*FROM VIEW WHERE状态('....','.....')
我怎样才能做到这一点?
我的代码可以看到非公开成员,但不能看到公共成员.为什么?
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) c++ ×3
c# ×2
django ×2
.net ×1
argc ×1
argv ×1
biginteger ×1
cakephp ×1
cookies ×1
crypto++ ×1
d ×1
encryption ×1
java ×1
linq ×1
parameters ×1
postgresql ×1
python ×1
reflection ×1
session ×1
sql ×1
templates ×1