XTabLayout的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XTabLayout的使用相关的知识,希望对你有一定的参考价值。

参考技术A

XTabLayout的使用

XTabLayout是基于design包中的TabLayout进行了功能的扩展,在保留原有功能的基础上,增加了修改选中项字体大小、字体粗体、字体和指示器颜色、分割线、指示器长度以及限制屏幕显示范围内显示的Tab个数等功能。先看效果图:

compile \'com.androidkun:XTabLayout:1.1.3\'

compile \'com.androidkun:XTabLayout:1.1.3\'

//将TabLayout和ViewPager关联起来。

使用带有填充的 DES 使用提供的密钥进行加密

【中文标题】使用带有填充的 DES 使用提供的密钥进行加密【英文标题】:encryption using provided key using DES with padding 【发布时间】:2012-05-24 22:22:19 【问题描述】:

我想使用给定密钥使用 DES 加密帧。

我使用的填充样式是 PKCS5Padding。如果要添加 2 个字节,则使用 02 02 填充字符串;如果要添加 3 个字节以形成 8 的倍数,则使用 03 03 03 填充字符串。 但我的要求是用我的特定字节填充一个字符串。例如,如果要添加 2 个字节,则添加 30 30 和 3 个字节,然后添加 30 30 30(十六进制 0 的值为 30)。另外,我必须知道添加了多少填充字节。 我应该遵循哪种填充技术以及如何使用它?

下面是我的加密代码:

byte[] keyValue = new byte[](byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x30, (byte) 0x16,(byte) 0x05, (byte) 0x12;
myKeySpec = new DESKeySpec(keyValue);
mySecretKeyFactory = SecretKeyFactory.getInstance("DES");
key = mySecretKeyFactory.generateSecret(myKeySpec);


Cipher cipher = Cipher.getInstance("DES/CBC/PKCS5Padding");
IvParameterSpec iv2 = new IvParameterSpec(new byte[8]);
cipher.init(Cipher.ENCRYPT_MODE, key, iv2);
byte[] plainText = function.HexStringToByteArray(payloadRecv);
byte[] encryptedText = cipher.doFinal(plainText);

【问题讨论】:

【参考方案1】:

不要在密码规范中选择PKCS5Padding。选择NoPadding。在加密之前,您必须自己将填充添加到数据中。解密后(同样不使用填充),您必须检查最后一个字节以了解要删除和自己删除的填充字节数。

基本上,只需按照您的描述编写代码即可。

【讨论】:

没错,但我希望你的数据不要以 30h 结尾,因为无法区分数据和填充。我从未听说过询问者描述的填充机制,因此它不会包含在任何加密 API 中。 @Robert:是的,如果你总是添加填充,就会有填充。这与我的评论有何关系? @Robert:无论使用什么填充方案,它都必须允许解密器区分真实数据和填充。如果真实数据以 30H 结束,那么你怎么知道真实数据在哪里结束和填充开始?假设解密器解密最后一个块并看到 30H 30H。哪些字节是填充,哪些是数据? 如果我对原始问题的理解正确,他确定要添加的填充字节数,然后将每个字节的值设置为该数字的 16 倍。所以如果最后一个字节是0x40,那么就有4个字节的填充。

以上是关于XTabLayout的使用的主要内容,如果未能解决你的问题,请参考以下文章

使用Tablayout出现标题消失的原因:setupWithViewPager()的大坑

Android Material Design-TabLayout的使用

TabLayout的使用

design包 TabLayout使用

使用 ActionBar 的 Tablayout 的滚动行为无法正常工作

不使用 ViewPager 的 TabLayout