小编And*_*yle的帖子

如何解决javax.crypto.IllegalBlockSizeException:数据不是块大小对齐

我正在做一个关于使用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)

谢谢.

java

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

<String>做了什么吗?

List<String>是否有效但有效List<int>.我一直想知道这件事.

java generics primitive-types

5
推荐指数
2
解决办法
146
查看次数

Scalatest是否支持假设?

根据标题,我想知道在定义特定测试用例时是否可以向Scalatest提供"假设".在此上下文中的假设将是测试的先决条件,使得如果假设被评估为假,则将跳过测试而不是执行测试(并且由跑步者相应地处理).

在这种特殊情况下,我正在考虑测试之间的依赖关系 - 因此可能存在一个基本测试,用于验证方法是否返回任何内容,然后是后来的测试,这些测试会深入研究响应的细节.如果前一个测试失败了,我宁愿让后一个测试以某种方式标记为"不可运行",而不是让它们失败.

这就是说我可以想象将来使用它来定义一些未连接的前提条件(例如硬盘必须至少有20MB的空间空闲),所以如果有一种通用的方式在运行时跳过测试(而不是使用ignorepending)我我宁愿听到这个.

欢迎使用专门的语法,但是如果我必须手动抛出某种类型的异常也是如此.

unit-testing scala scalatest

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

我应该使用Scala,Java还是Node.js?

我非常了解Scala编程语言.到目前为止,我理解了有关Scala的以下概念:

  • 在传统的JVM上运行
  • 可与Java互操作
  • 结合OOP和函数式编程概念
  • 静态类型和可扩展
  • 更少的代码和更多的范例

我的要求很简单.我必须编写一个业务模块,该模块遵循一组应在运行时动态加载的预定义规则.例如,公司A有一套业务规则,公司B有另一套业务规则.当另一个程序访问业务模块API时,它应该加载该特定公司的规则并响应该服务.业务模块将涉及数据库访问和内部的更多Web服务调用以及广泛的xml解析.

我们需要这个模块尽可能地扩展.我可以使用JAVA的AOP概念,但它太复杂了.该代码将来无法维护.

在这种情况下,Scala是更好的选择吗?我甚至在考虑Node.js

请让我知道你的想法!

scala node.js

5
推荐指数
0
解决办法
1203
查看次数

jsf和java中同步方法的最佳实践

我有一个JSF应用程序,用户在其中创建一些文件.问题是,他们必须上传并下载确认消息,上传/下载过程是独家的,当时只有一个用户,因为认证需要技术用户/密码.我的问题是,如何让等待过程对用户透明,这是一种协议,例如:

  • 等着连接
  • 认证
  • 上传文件
  • 下载确认文件
  • DONE

java ajax jsf

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

功能重定向的HTTP状态

现在我们已经有了显示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:字段.思考?

php post redirect http http-status-code-302

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

为什么Java toString()在间接循环中无限循环?

这更像是一个我想分享的问题而不是一个问题:当打印时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被称为的对象.

鉴于它受此方法的限制,这里有一个检查它的算法:

  • root是第一个toString()被调用的对象(为了确定这一点,你需要保持关于toString当前是否正在进行的状态;所以这很不方便).
    • 在遍历每个对象时,将其添加到IdentityHashMap,以及唯一标识符(例如递增的索引).
    • 但如果此对象已在Map中,请写出其标识符.

此方法还可以正确呈现multirefs(一个多次引用的节点).

内存成本是IdentityHashMap(每个对象一个引用和索引); 复杂性成本是有向图中每个节点(即每个打印的对象)的哈希查找.

java collections cycle infinite-loop

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

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

XmlDocument读取XML文档注释问题

我使用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注释吗?

.net c# xml xmldocument xml-comments

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

如何使用javascript检查是否启用了java插件?

我有一个包含小程序代码的 .aspx 页面。为了运行它,浏览器必须有一个活动的 Java 插件。

有没有办法使用Javascript检查是否安装并启用了Java插件?

javascript asp.net

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