public void read(SelectionKey key,ByteBuffer readBuffer) throws IOException, BadPaddingException {
SocketChannel socketChannel = (SocketChannel) key.channel();
ByteBuffer clientSSLData = ByteBuffer.allocate(getPacketBufferSize());
System.out.println("Reading data. PacketBufferSize: "+(getPacketBufferSize()));
int length = socketChannel.read(clientSSLData);
System.out.println("read "+length+" bytes");
if (length == -1){
System.out.println("Length is -1 which means nothing was read from the channel ");
socketChannel.close();
return;
}
clientSSLData.flip();
readBuffer.clear();
SSLEngineResult res = sslEngine.unwrap(clientSSLData, readBuffer);
System.out.println(res.toString());
}
编辑:异常是...
javax.net.ssl.SSLException:在sun.security.ssl.alerts.getsslException(未知源)在sun.security.ssl.sslengineimpl.fatal(未知源)在sun.security.ssl.sslengineimpl.readRecord(未知源)在sun.security.ssl.sslengineimpl.readRecord(未知源)在sun.security.ssl.sslengineimpl.unwrap(未知源)在在ssl.engine.impl.channelhandler.run(channelhandler.java:69)在java.lang.thread.run(未知源)由:javax.crypto.BadPaddingException:sun.security.ssl.engininputrecord.decrypt(未知源)的坏记录MAC.
你做错了。当您需要获取数据时,您应该:
unwrap().
同样,当您需要放置数据时,您应该:
问题内容: 这已经让我发疯了几天。我使用SSL引擎使用java nio和ssl加密创建了一个客户端。握手可以正常工作,我向网站写入GET请求,并且工作正常(我获得了包含200个代码的标头)。问题是,当网站将数据包发回时,在第二个数据包上,我收到BadPaddingException。这是我的读取方法: 我的获取请求很简单,例如:“获取\ r \ n主机:www.google.com \ r \ n
为了记录请求和响应,我添加了一个LoggingRequestInterceptor,它实现了ClientHTTPPrequestinterceptor。。。 响应主体是一个流,如果我将其读取到我的拦截器中,TestRestTemplate将无法将其反序列化到我的对象模型中。换句话说,当我调用testRestTemplate时。获取…我将始终获取空对象(即使我看到对象我的响应)。 要解决RestTe
记录 限制记录 条记录 (每页) 如果你想全局地限制在网格或外键数据选择时每页显示的记录数,可勾选这个选项。否则,所有记录将会显示在一页里。 【注意】若要为特定的表或集合调整设置,请参阅数据查看器。 自动开始事务 如果你需要在更改表或集合中的记录时,自动开始一个新事务,可勾选这个选项。否则,自动提交会自动启用,你需要在数据查看器中点击 “开始事务”按钮来手动开始事务。 在数据查看器中打开事务时,可
记录 限制记录 条记录 (每页) 如果你想全局地限制在网格每页显示的记录数,可勾选这个选项。否则,所有记录将会显示在一页里。 【注意】若要为特定的表或集合调整设置,请参阅数据查看器。 自动开始事务 如果你需要在更改表或集合中的记录时,自动开始一个新事务,可勾选这个选项。否则,自动提交会自动启用,你需要在数据查看器中点击 按钮来手动开始事务。 在数据查看器中打开事务时,可以使用 或 按钮来提交或回滚
记录 限制记录 条记录 (每页) 如果你想全局地限制在网格或外键数据选择时每页显示的记录数,可勾选这个选项。否则,所有记录将会显示在一页里。 【注意】若要为特定的表或集合调整设置,请参阅数据查看器。 自动开始事务 如果你需要在更改表或集合中的记录时,自动开始一个新事务,可勾选这个选项。否则,自动提交会自动启用,你需要在数据查看器中点击 “开始事务”按钮来手动开始事务。 在数据查看器中打开事务时,可
问题内容: 我想在我的应用程序中将slf4j + logback用于两个目的-日志和审计。 对于日志记录,我以常规方式记录日志: 对于审计,我创建一个特殊的命名记录器并登录到它: 登录配置: 问题:通过审核记录器记录的消息出现两次-一次在AUDIT_LOGGER下,一次在根记录器下。 14:41:57.975 [main]调试com.gammay.example.Main–> main() 14: