我正在做一个关于使用blowfish在java中进行加密和解密的任务.
我添加了一个提供程序,并获取实例"Blowfish/ECB/NoPadding",但在进行加密时仍然出现此错误.
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
Run Code Online (Sandbox Code Playgroud)
例如:
public static byte[] encrypt(byte to_encrypt[], byte strkey[]) {
try {
SecretKeySpec key = new SecretKeySpec(strkey, "Blowfish");
Cipher cipher = Cipher.getInstance("Blowfish/ECB/NoPadding");
cipher.init(Cipher.ENCRYPT_MODE, key);
return cipher.doFinal(to_encrypt); // <=========== error
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
导致
javax.crypto.IllegalBlockSizeException: data not block size aligned
at org.bouncycastle2.jce.provider.JCEBlockCipher.engineDoFinal(JCEBlockCipher.java:686)
at javax.crypto.Cipher.doFinal(Cipher.java:1171)
Run Code Online (Sandbox Code Playgroud)
谢谢.
根据标题,我想知道在定义特定测试用例时是否可以向Scalatest提供"假设".在此上下文中的假设将是测试的先决条件,使得如果假设被评估为假,则将跳过测试而不是执行测试(并且由跑步者相应地处理).
在这种特殊情况下,我正在考虑测试之间的依赖关系 - 因此可能存在一个基本测试,用于验证方法是否返回任何内容,然后是后来的测试,这些测试会深入研究响应的细节.如果前一个测试失败了,我宁愿让后一个测试以某种方式标记为"不可运行",而不是让它们失败.
这就是说我可以想象将来使用它来定义一些未连接的前提条件(例如硬盘必须至少有20MB的空间空闲),所以如果有一种通用的方式在运行时跳过测试(而不是使用ignore或pending)我我宁愿听到这个.
欢迎使用专门的语法,但是如果我必须手动抛出某种类型的异常也是如此.
我非常了解Scala编程语言.到目前为止,我理解了有关Scala的以下概念:
我的要求很简单.我必须编写一个业务模块,该模块遵循一组应在运行时动态加载的预定义规则.例如,公司A有一套业务规则,公司B有另一套业务规则.当另一个程序访问业务模块API时,它应该加载该特定公司的规则并响应该服务.业务模块将涉及数据库访问和内部的更多Web服务调用以及广泛的xml解析.
我们需要这个模块尽可能地扩展.我可以使用JAVA的AOP概念,但它太复杂了.该代码将来无法维护.
在这种情况下,Scala是更好的选择吗?我甚至在考虑Node.js
请让我知道你的想法!
我有一个JSF应用程序,用户在其中创建一些文件.问题是,他们必须上传并下载确认消息,上传/下载过程是独家的,当时只有一个用户,因为认证需要技术用户/密码.我的问题是,如何让等待过程对用户透明,这是一种协议,例如:
现在我们已经有了显示UI元素的网页,以及只处理表单提交的网页,然后重定向回UI页面.他们使用PHP的header()函数执行此操作:
header("Location: /other_page.php");
Run Code Online (Sandbox Code Playgroud)
这会导致发送302 Found响应; 根据HTTP 1.1规范,302适用于"请求的资源暂时驻留在不同的URI下"的情况.[HTTP 1.1规范]
从功能上来说,这很好,但看起来这似乎是我们正在做的正确的状态代码.看起来303("See Other")在这里是合适的状态,所以我想知道是否有任何理由不使用它.我们必须更明确地使用header(),因为我们必须指定状态行而不仅仅是Location:字段.思考?
这更像是一个我想分享的问题而不是一个问题:当打印时toString(),Java将检测Collection中的直接循环(Collection指的是其自身),而不是间接循环(其中Collection指的是另一个指向第一个 - 或更多步骤).
import java.util.*;
public class ShonkyCycle {
static public void main(String[] args) {
List a = new LinkedList();
a.add(a); // direct cycle
System.out.println(a); // works: [(this Collection)]
List b = new LinkedList();
a.add(b);
b.add(a); // indirect cycle
System.out.println(a); // shonky: causes infinite loop!
}
}
Run Code Online (Sandbox Code Playgroud)
这对我来说是一个真正的问题,因为它发生在调试代码中以打印出Collection(当它遇到直接循环时我感到很惊讶,所以我错误地认为他们已经实现了一般的检查).有一个问题:为什么?
我能想到的解释是,检查一个引用自身的集合是非常便宜的,因为你只需要存储集合(你已经存在),但是对于更长的周期,你需要存储所有的集合你遭遇,从根开始.此外,您可能无法确切地回答什么的根,所以你必须存储在系统中的每个集合-你无论如何做-但你也不得不做的每集合元素的哈希查找.对于相对罕见的周期(在大多数编程中),这是非常昂贵的.(我认为)它检查直接循环的唯一原因是因为它如此便宜(一个参考比较).
好的...我有点回答了我自己的问题 - 但是我错过了什么重要的事吗?有人想要添加任何东西吗?
澄清:我现在意识到我看到的问题特定于打印 Collection(即toString()方法).循环本身没有问题(我自己使用它们并需要它们); 问题是Java无法打印它们.编辑 Andrzej Doyle指出它不仅仅是集合,而是任何toString被称为的对象.
鉴于它受此方法的限制,这里有一个检查它的算法:
toString()被调用的对象(为了确定这一点,你需要保持关于toString当前是否正在进行的状态;所以这很不方便).
此方法还可以正确呈现multirefs(一个多次引用的节点).
内存成本是IdentityHashMap(每个对象一个引用和索引); 复杂性成本是有向图中每个节点(即每个打印的对象)的哈希查找.
我使用XmlDocument来解析xml文件,但似乎XmlDocument始终将xml注释作为xml节点读取:
我的C#代码
XmlDocument xml = new XmlDocument();
xml.Load(filename);
foreach (XmlNode node in xml.FirstChild.ChildNodes) {
}
Run Code Online (Sandbox Code Playgroud)
Xml文件
<project>
<!-- comments-->
<application name="app1">
<property name="ip" value="10.18.98.100"/>
</application>
</project>
Run Code Online (Sandbox Code Playgroud)
.NET不应该跳过XML注释吗?
我有一个包含小程序代码的 .aspx 页面。为了运行它,浏览器必须有一个活动的 Java 插件。
有没有办法使用Javascript检查是否安装并启用了Java插件?
java ×4
javascript ×2
scala ×2
.net ×1
ajax ×1
asp.net ×1
c# ×1
collections ×1
cycle ×1
dom ×1
generics ×1
http ×1
jsf ×1
node.js ×1
php ×1
post ×1
redirect ×1
scalatest ×1
unit-testing ×1
xml ×1
xml-comments ×1
xmldocument ×1