Cipher

本文介绍了Cipher的七大核心属性,包括加密、解密、包装和解包装模式,以及公钥、私钥和密钥类型。讲解了如何使用这些模式进行加密操作,并提到了TEEC_Operation的初始化及其参数设置。此外,还讨论了数组复制函数arraycopy的作用以及数值转换方法Integer.toHexString。文章最后提及了JNI中获取对象类的方法jclassGetObjectClass和设置数组区域的函数SetArrayRegion。

Cipher的七个主要公有属性

  • 1、ENCRYPT_MODE,整型值1,加密模式,用于Cipher的初始化。
  • 2、DECRYPT_MODE,整型值2,解密模式,用于Cipher的初始化。
  • 3、WRAP_MODE,整型值3,包装密钥模式,用于Cipher的初始化。
  • 4、UNWRAP_MODE,整型值4,解包装密钥模式,用于Cipher的初始化。
  • 5、PUBLIC_KEY,整型值1,解包装密钥模式下指定密钥类型为公钥。
  • 6、PRIVATE_KEY,整型值2,解包装密钥模式下指定密钥类型为私钥。
  • 7、SECRET_KEY,整型值3,解包装密钥模式下指定密钥类型为密钥,主要用于不是非对称加密的密钥(只有一个密钥,不包含私钥和公钥)

初始化TEEC_Operation类型的变量,并根据实际需要借助TEEC_PARAM_TYPES宏来设定TEEC_Operation类型变量中paramTypes成员的值,该值规定传递到OP-TEE中的最多4个变量缓存或者是数据的作用(作为输入还是输出)。并且还要根据paramTypes的值设定对应的params[x]成员的值或者是指向的地址以及缓存的长度

public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
作用:将指定源数组中的数组从指定位置复制到目标数组的指定位置。
参数:

src - 源数组。

srcPos - 源数组中的起始位置。

dest - 目标数组。

destPos - 目的地数据中的起始位置。

length - 要复制的源数组元素的数量

Integer.toHexString  十进制转成十六进制

String toHexString(int i) //以十六进制(基数 16)无符号整数形式返回一个整数参数的字符串表示形式。

也就是将传入的数值十进制转成十六进制

System.out.println("十进制转十六进制:"+Integer.toHexString(120)); 
十进制转十六进制:78

一个十六进制数(Hex),正好为4个二进制位。一个字节(byte)为8个二进制位。因此,一个字节可表示为两个十六进制数字。

    因此,我们可以将一个byte用两个Hex表示,同理,我们也可以将两个Hex转换为一个byte

  • jclass GetObjectClass(jobject obj) 根据一个对象,获取该对象的类

这个方法比较好理解,根据上面我们讲的根据jobject的类型,我们在JNI中写方法的时候如果是非静态的都会传一个jobject的对象。我们可以根据传入的来获取当前对象的类

void SetArrayRegion(JNIEnv *env, ArrayType array,jsize start, jsize len, const Type *buf):上面方法的对应方法,将缓冲区的部分数据设置回Java原始数组中

 

<think>嗯,用户遇到了“cipher命令未找到”的错误,这确实是个令人头疼的问题。从对话历史看,用户之前询问过H3C交换机提示“未找到识别命令”的问题,现在又聚焦到cipher命令上,说明ta可能正在配置网络设备的安全加密功能。 用户引用了五段资料,但只有引用[1]和[3]真正相关。引用[1]提到SSH命令格式,引用[3]则涉及cipher加密配置文件时的报错。用户显然在尝试使用cipher命令时遇到了障碍。 让我拆解这个问题:首先,“未找到识别命令”通常意味着三种可能:命令拼写错误、设备型号不支持该命令、或者未进入正确的配置模式。考虑到cipher是H3C/Huawei设备的常用命令,更可能是后两种情况。 具体到解决方案,需要分层次处理:最基础的是检查命令模式——cipher必须在系统视图下使用。如果用户还在用户视图(看到<H3C>提示符),就需要先输入system-view。进阶层面要考虑设备型号差异,比如较老的S3600系列就不支持cipher命令。最彻底的方法是检查文档确认命令兼容性。 用户引用[3]提到排除数据库自动配置的问题,这可能是另一个线索——也许用户把编程环境中的cipher模块和设备命令混淆了?需要提醒ta区分这两类场景。 在回复组织上,应该按排查难度排序:从最简单的模式切换开始,到型号确认,最后给出替代命令。对于V7设备要特别说明password-recovery机制,这个细节很多用户会忽略。每个步骤都要配上示例命令,毕竟CLI操作容错率低。 啊,差点忘了用户可能需要的衍生知识:为什么cipher命令在某些视图不可用?其实这是设备的安全设计,防止低权限用户获取加密密码。这个原理可以放在注意事项里。 最后生成的相关问题要覆盖用户可能的后续需求:如何查看加密密码?怎么重置密码?这都是用户接下来可能问的。特别是V7设备的密码恢复流程,很多管理员都会遇到。</think>在H3C/Huawei网络设备上出现`cipher命令未找到`错误,通常由以下原因及解决方案导致,请逐步排查: --- ### 一、主要原因及解决方法 #### 1. **未进入系统视图** `cipher`是系统视图(`[H3C]`)下的命令,在用户视图(`<H3C>`)下直接输入会报错。 **解决步骤**: ```bash <H3C> system-view # 进入系统视图 [H3C] # 此时提示符变为方括号 [H3C] password-control enable # 启用密码策略(若需加密) [H3C] local-user admin password cipher NewPassword123 # 正确使用cipher命令 ``` #### 2. **设备型号/系统版本不支持** - 部分老型号(如S3600系列)或低版本系统可能不支持`cipher`命令。 - **替代方案**: - 使用`simple`明文设置密码(不推荐): ```bash [H3C] local-user admin password simple PlainPassword ``` - 升级设备系统版本至支持加密的版本(如V5/V7平台)。 #### 3. **命令语法错误** `cipher`需配合具体配置使用,不可单独执行: **错误示例**: ```bash [H3C] cipher # 单独输入会报错 ``` **正确用法**: ```bash [H3C] local-user admin password cipher NewPassword # 为用户设置加密密码 [H3C] set authentication password cipher NewPassword # 在VTY视图中设置登录密码 ``` --- ### 二、高级场景排查 #### 1. **V7平台差异** V7系统使用**新密码策略机制**: ```bash [H3C] password-recovery enable # 启用密码恢复功能(V7) [H3C] line vty 0 4 [H3C-line-vty0-4] authentication-mode scheme [H3C-line-vty0-4] protocol inbound ssh # 若需SSH登录 ``` #### 2. **恢复出厂设置** 若遗忘密码或配置混乱: 1. 长按设备**RESET按钮6秒**恢复出厂设置。 2. 默认账号/密码:`admin/admin` 或 `admin/123456`[^1]。 --- ### 三、注意事项 1. **加密本质**: `cipher`设置的密码在配置文件中显示为**加密字符串**(如`$crypted_string$`),无法逆向解密。 2. **兼容性**: Web界面设置的密码自动加密,与CLI的`cipher`效果相同。 > ⚠️ 若仍报错,请提供以下信息进一步排查: > - 设备型号(如S6850) > - 系统版本(通过`display version`查看) > - 完整执行命令的截图。 --- ### 相关问题 1. 如何在H3C交换机上查看已加密的密码配置项? 2. H3C设备V5与V7版本的密码管理命令有何区别? 3. 如何通过SSH登录H3C交换机并避免密码明文传输? 4. 重置H3C交换机后如何快速恢复基础网络配置?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值