CN113282913A - 一种密码替换方法及装置 - Google Patents
一种密码替换方法及装置 Download PDFInfo
- Publication number
- CN113282913A CN113282913A CN202110833496.0A CN202110833496A CN113282913A CN 113282913 A CN113282913 A CN 113282913A CN 202110833496 A CN202110833496 A CN 202110833496A CN 113282913 A CN113282913 A CN 113282913A
- Authority
- CN
- China
- Prior art keywords
- password
- password information
- information
- preset rule
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
- G06F21/46—Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种密码替换方法及装置。其中,该方法包括:获取原始密码信息;根据预设规则,将所述原始密码信息进行替换,得到占位密码信息;将所述占位密码信息进行输出。本发明解决了现有的技术方案一般是在项目执行的过程中利用明文存储密码,并同步到代码管理仓库中。比如:数据库密码、API类的鉴权密码、供应商账户密码等。但是对于团队合作的项目,当项目文件中有较多密码时,因为权限管理的需要,不适合如上述技术方案使用纯明文的方式进行密码存储的技术问题。
Description
技术领域
本发明涉及数据安全领域,具体而言,涉及一种密码替换方法及装置。
背景技术
随着智能化科技的不断发展,人们的生活、工作、学习之中越来越多地用到了智能化设备,使用智能化科技手段,提高了人们生活的质量,增加了人们学习和工作的效率。
目前,现有的技术方案一般是在项目执行的过程中利用明文存储密码,并同步到代码管理仓库中。比如:数据库密码、API类的鉴权密码、供应商账户密码等。但是对于团队合作的项目,当项目文件中有较多密码时,因为权限管理的需要,不适合如上述技术方案使用纯明文的方式进行密码的存储。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种密码替换方法及装置,以至少解决现有的技术方案一般是在项目执行的过程中利用明文存储密码,并同步到代码管理仓库中。比如:数据库密码、API类的鉴权密码、供应商账户密码等。但是对于团队合作的项目,当项目文件中有较多密码时,因为权限管理的需要,不适合如上述技术方案使用纯明文的方式进行密码存储的技术问题。
根据本发明实施例的一个方面,提供了一种密码替换方法,包括:获取原始密码信息;根据预设规则,将所述原始密码信息进行替换,得到占位密码信息;将所述占位密码信息进行输出。
可选的,在所述根据预设规则,将所述原始密码信息进行替换,得到占位密码信息之前,所述方法还包括:获取所述预设规则,其中,所述预设规则用于替换相应的密码信息。
可选的,所述根据预设规则,将所述原始密码信息进行替换,得到占位密码信息包括:获取所述预设规则;根据所述预设规则运行部署程序,得到所述占位密码信息。
可选的,所述占位密码信息包括:开发环境占位密码信息、生产环境占位密码信息。
可选的,在所述获取原始密码信息之前,所述方法还包括:获取应用场景信息,其中,所述应用场景信息包括:开发环境、生产环境。
根据本发明实施例的另一方面,还提供了一种密码替换装置,包括:获取模块,用于获取原始密码信息;替换模块,用于根据预设规则,将所述原始密码信息进行替换,得到占位密码信息;输出模块,用于将所述占位密码信息进行输出。
可选的,所述装置还包括:规则模块,用于获取所述预设规则,其中,所述预设规则用于替换相应的密码信息。
可选的,所述替换模块包括:获取单元,用于获取所述预设规则;占位单元,用于根据所述预设规则运行部署程序,得到所述占位密码信息。
可选的,所述占位密码信息包括:开发环境占位密码信息、生产环境占位密码信息。
可选的,所述装置还包括:场景模块,用于获取应用场景信息,其中,所述应用场景信息包括:开发环境、生产环境。
根据本发明实施例的另一方面,还提供了一种非易失性存储介质,所述非易失性存储介质包括存储的程序,其中,所述程序运行时控制非易失性存储介质所在的设备执行一种密码替换方法。
根据本发明实施例的另一方面,还提供了一种电子装置,包含处理器和存储器;所述存储器中存储有计算机可读指令,所述处理器用于运行所述计算机可读指令,其中,所述计算机可读指令运行时执行一种密码替换方法。
在本发明实施例中,采用获取原始密码信息;根据预设规则,将所述原始密码信息进行替换,得到占位密码信息;将所述占位密码信息进行输出的方式,解决了现有的技术方案一般是在项目执行的过程中利用明文存储密码,并同步到代码管理仓库中。比如:数据库密码、API类的鉴权密码、供应商账户密码等。但是对于团队合作的项目,当项目文件中有较多密码时,因为权限管理的需要,不适合如上述技术方案使用纯明文的方式进行密码存储的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种密码替换方法的流程图;
图2是根据本发明实施例的一种密码替换装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种密码替换方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一
图1是根据本发明实施例的一种密码替换方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取原始密码信息。
具体的,本发明实施例为了解决现有技术中一般是在项目执行的过程中利用明文存储密码,并同步到代码管理仓库中。比如:数据库密码、API类的鉴权密码、供应商账户密码等。但是对于团队合作的项目,当项目文件中有较多密码时,因为权限管理的需要,不适合如上述技术方案使用纯明文的方式进行密码存储的技术问题,首先需要通过密码采集器采集用户的原始密码信息,并将原始密码信息通过处理器进行存储和传输,以备后续针对原始密码信息中的数据进行加密之用。
可选的,在所述获取原始密码信息之前,所述方法还包括:获取应用场景信息,其中,所述应用场景信息包括:开发环境、生产环境。
具体的,在本发明实施例获取原始密码信息之前,为了增加原始密码信息以及后续密码替换的准确性,还需要获取应用场景信息,由于不同的应用场景信息对应着不同的密码替换规则和密码替换安全程度,因此首先需要通过场景信息采集功能对场景信息进行采集,其中,场景信息的获取可以通过用户手动进行输入,也可以根据用户的项目情况或者项目标签,识别该项目的场景信息,上述应用场景信息包括:开发环境、生产环境。
步骤S104,根据预设规则,将所述原始密码信息进行替换,得到占位密码信息。
具体的,本发明为了将获取到的原始密码信息进行替换,并根据预设规则的计算生成占位密码信息,以便在后续用户使用密码的时候,可以不用以明码来进行使用,降低密码使用的安全性,其中,上述预设规则可以是根据密码占位和替换原理,用户针对不同应用场景而进行编写和设计的密码占位替换规则,并通过该规则可以将密码进行安全占位转换。
可选的,在所述根据预设规则,将所述原始密码信息进行替换,得到占位密码信息之前,所述方法还包括:获取所述预设规则,其中,所述预设规则用于替换相应的密码信息。
具体的,为了利用预设规则对原始密码信息进行替换处理,并生成后续的占位密码信息,在所述根据预设规则,将所述原始密码信息进行替换,得到占位密码信息之前,所述方法还包括:获取所述预设规则,其中,所述预设规则用于替换相应的密码信息。
可选的,所述根据预设规则,将所述原始密码信息进行替换,得到占位密码信息包括:获取所述预设规则;根据所述预设规则运行部署程序,得到所述占位密码信息。
可选的,所述占位密码信息包括:开发环境占位密码信息、生产环境占位密码信息。
具体的,根据本发明实施例的假设文件,其内容为:
DB_PASSWORD=12345
APPKEY=12345678xxx
将其中的明文密码替换为约-定好的预设值:
DB_PASSWORD={{DB_PASSWORD}}
APPKEY={{APPKEY}}
团队成员之间约定好,类似于 APPKEY={{APPKEY}} 的格式,表示需要根据当前的运行环境自行替换预设值。
另外,在不同的场景信息中,本发明实施例对于密码替换的过程也不同,例如:
开发环境中,数据库密码为:dev12345;
生产环境中,数据库密码为:prod12345;
在开发环境中,部署程序需要将文件:
DB_PASSWORD={{DB_PASSWORD}}
APPKEY={{APPKEY}}
替换为:
DB_PASSWORD=dev12345
APPKEY={{APPKEY}}
在生产环境中,部署程序需要将文件:
DB_PASSWORD={{DB_PASSWORD}} APPKEY={{APPKEY}}
替换为:DB_PASSWORD=prod12345,APPKEY={{APPKEY}}。
需要说明的是,对于判断开发场景或者生产场景下的密码代位加密,可以采用非对称加密算法中的密码代位方法来实施,其中,非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。对于本发明实施例在采用非对称算法的同时,非对称密码体制具有算法强度复杂、安全度高的特点,对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。
进一步地,针对非对称算法的私钥获取,可以根据用户在明文密码设置的时候,通过对密码复杂度的识别,来选择私钥的复杂度o的开次方数值,即密码越简单越容易被破解,其代位复杂度就需要越高,来弥补明文密码的缺陷,其中,上述复杂度的选择中,过高的复杂度会导致密码代位过程较缓慢,过低的复杂度会导致密码代位的安全性降低,因此私钥位数以及复杂程度o的选择是非对称算法中密码代位的优化节点。例如,在开发环境中,用户的密码为12345,对于此类较简单的密码,其代位复杂度为o(16),那么根据上述复杂度生成o(16)相对应的私钥a。
还需要说明的是,对于在开发环境或者生产环境中,选择不同的私钥和共享的公钥来进行密码的代位计算可以达到多场景多加密安全保障的技术效果,其中,用于多环境的非对称代位算法可以是DH算法,他是一种确保共享KEY安全穿越不安全网络的方法,即允许两名用户在公开媒体上交换信息以生成“一致”的、可以共享的密钥。也就是由甲方产出一对密钥(公钥、私钥),乙方依照甲方公钥产生乙方密钥对(公钥、私钥),其中不同的私钥用于不同的环境,私钥的生成还可以根据本发明实施例所述通过代为前明文密码的复杂度来确定。
例如,本发明实施例对于DH算法的实现如下:DHUtil.java
import java.security.InvalidKeyException;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyAgreement;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.interfaces.DHPrivateKey;
import javax.crypto.interfaces.DHPublicKey;
import javax.crypto.spec.DHParameterSpec;
public class DHUtil {* 定义加密方式*/
private static final String KEY_DH = "DH";
public static final String PUBLIC_KEY = "DHPublicKey";
public static final String PRIVATE_KEY = "DHPrivateKey";
// 实例化密钥对生成器
KeyPairGenerator keyPairGenerator = KeyPairGenerator
.getInstance(KEY_DH);// 初始化密钥对生成器 默认是1024 512-1024 & 64的倍数
keyPairGenerator.initialize(1024);// 生成密钥对
KeyPair keyPair = keyPairGenerator.generateKeyPair();// 得到公钥
DHPublicKey publicKey = (DHPublicKey) keyPair.getPublic();// 得到多环境私钥
DHPrivateKey privateKey = (DHPrivateKey) keyPair.getPrivate();// 将公钥和私钥封装在Map中, 方便之后使用
Map<String, Object> keyMap = new HashMap<String, Object>();
keyMap.put(PUBLIC_KEY, publicKey);
keyMap.put(PRIVATE_KEY, privateKey);
return keyMap;
} catch (Exception e) {
throw new RuntimeException(e);}}
* @return*/
public static Map<String, Object> initKey(byte[] key) {try {// 将公钥从字节数组转换为PublicKey
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(key);
// 实例化密钥KeyFactory keyFactory = KeyFactory.getInstance(KEY_DH);
// 产生公钥pubKeyDHPublicKey dhPublicKey = (DHPublicKey) keyFactory
.generatePublic(keySpec);/ 剖析公钥,得到其参数
DHParameterSpec dhParameterSpec = dhPublicKey.getParams();// 实例化密钥对生成器
KeyPairGenerator keyPairGenerator = KeyPairGenerator
keyPairGenerator.initialize(dhParameterSpec);// 产生密钥对
public class Test {// 待加密的明文
public static final String DATA = "test";public static void main(String[] args) throws Exception {/* Test DH */byte[] publicKey1;// 初始化密钥 并生成甲方密钥对
Map<String, Object> keyMap1 = DHUtil.initKey();
publicKey1 = DHUtil.getPublicKey(keyMap1);
privateKey1 = DHUtil.getPrivateKey(keyMap1);
System.out
// 对于甲方, 根据其私钥和乙方发过来的公钥, 生成其本地密钥secretKey1
secretKey1 = DHUtil.getSecretKeyBytes(publicKey2, privateKey1);
System.out.println("DH 甲方 本地密钥 : "
+ BytesToHex.fromBytesToHex(secretKey1));
//生成其本地密钥secretKey2
secretKey2 = DHUtil.getSecretKeyBytes(publicKey1, privateKey2);
System.out.println("DH本地密钥 : "
+ BytesToHex.fromBytesToHex(secretKey2));
System.out.println("加密前的数据" + DATA);
byte[] encryptDH = DHUtil.encryptDH(DATA.getBytes(), publicKey2,
privateKey1);
System.out.println("加密后的数据 字节数组转16进制显示"
+ BytesToHex.fromBytesToHex(encryptDH));//数据的解密
byte[] decryptDH = DHUtil.decryptDH(encryptDH, publicKey1,privateKey2);
System.out.println("解密后数据:" + new String(decryptDH)); }}。步骤S106,将所述占位密码信息进行输出。
具体的,当本发明实施例通过预设算法的计算,获取到了最终的占位密码信息之后,需要将获取到的占位密码信息进行输出,其中,输出上述占位密码信息可以是通过展示设备展示给用户通过原始密码信息变换之后的占位密码信息,也可以是将占位后的相关密码信息发送至用户端,并设定仅有用户端一端可以进行查看和反馈相关的问题。
通过上述实施例,解决了现有的技术方案一般是在项目执行的过程中利用明文存储密码,并同步到代码管理仓库中。比如:数据库密码、API类的鉴权密码、供应商账户密码等。但是对于团队合作的项目,当项目文件中有较多密码时,因为权限管理的需要,不适合如上述技术方案使用纯明文的方式进行密码存储的技术问题。
实施例二
图2是根据本发明实施例的一种密码替换装置的结构框图,如图2所示,该装置包括:
获取模块20,用于获取原始密码信息。
具体的,本发明实施例为了解决现有技术中一般是在项目执行的过程中利用明文存储密码,并同步到代码管理仓库中。比如:数据库密码、API类的鉴权密码、供应商账户密码等。但是对于团队合作的项目,当项目文件中有较多密码时,因为权限管理的需要,不适合如上述技术方案使用纯明文的方式进行密码存储的技术问题,首先需要通过密码采集器采集用户的原始密码信息,并将原始密码信息通过处理器进行存储和传输,以备后续针对原始密码信息中的数据进行加密之用。
可选的,所述装置还包括:场景模块,用于获取应用场景信息,其中,所述应用场景信息包括:开发环境、生产环境。
具体的,在本发明实施例获取原始密码信息之前,为了增加原始密码信息以及后续密码替换的准确性,还需要获取应用场景信息,由于不同的应用场景信息对应着不同的密码替换规则和密码替换安全程度,因此首先需要通过场景信息采集功能对场景信息进行采集,其中,场景信息的获取可以通过用户手动进行输入,也可以根据用户的项目情况或者项目标签,识别该项目的场景信息,上述应用场景信息包括:开发环境、生产环境。
替换模块22,用于根据预设规则,将所述原始密码信息进行替换,得到占位密码信息。
具体的,本发明为了将获取到的原始密码信息进行替换,并根据预设规则的计算生成占位密码信息,以便在后续用户使用密码的时候,可以不用以明码来进行使用,降低密码使用的安全性,其中,上述预设规则可以是根据密码占位和替换原理,用户针对不同应用场景而进行编写和设计的密码占位替换规则,并通过该规则可以将密码进行安全占位转换。
可选的,所述装置还包括:规则模块,用于获取所述预设规则,其中,所述预设规则用于替换相应的密码信息。
具体的,为了利用预设规则对原始密码信息进行替换处理,并生成后续的占位密码信息,在所述根据预设规则,将所述原始密码信息进行替换,得到占位密码信息之前,所述方法还包括:获取所述预设规则,其中,所述预设规则用于替换相应的密码信息。
可选的,所述替换模块包括:获取单元,用于获取所述预设规则;占位单元,用于根据所述预设规则运行部署程序,得到所述占位密码信息。
可选的,所述占位密码信息包括:开发环境占位密码信息、生产环境占位密码信息。
具体的,根据本发明实施例的假设文件,其内容为:
DB_PASSWORD=12345
APPKEY=12345678xxx
将其中的明文密码替换为约-定好的预设值:
DB_PASSWORD={{DB_PASSWORD}}
APPKEY={{APPKEY}}
团队成员之间约定好,类似于 APPKEY={{APPKEY}} 的格式,表示需要根据当前的运行环境自行替换预设值。
另外,在不同的场景信息中,本发明实施例对于密码替换的过程也不同,例如:
开发环境中,数据库密码为:dev12345;
生产环境中,数据库密码为:prod12345;
在开发环境中,部署程序需要将文件:
DB_PASSWORD={{DB_PASSWORD}}
APPKEY={{APPKEY}}
替换为:
DB_PASSWORD=dev12345
APPKEY={{APPKEY}}
在生产环境中,部署程序需要将文件:
DB_PASSWORD={{DB_PASSWORD}} APPKEY={{APPKEY}}
替换为:DB_PASSWORD=prod12345,APPKEY={{APPKEY}}
需要说明的是,对于判断开发场景或者生产场景下的密码代位加密,可以采用非对称加密算法中的密码代位方法来实施,其中,非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将公钥公开,需要向甲方发送信息的其他角色(乙方)使用该密钥(甲方的公钥)对机密信息进行加密后再发送给甲方;甲方再用自己私钥对加密后的信息进行解密。甲方想要回复乙方时正好相反,使用乙方的公钥对数据进行加密,同理,乙方使用自己的私钥来进行解密。对于本发明实施例在采用非对称算法的同时,非对称密码体制具有算法强度复杂、安全度高的特点,对称密码体制中只有一种密钥,并且是非公开的,如果要解密就得让对方知道密钥。所以保证其安全性就是保证密钥的安全,而非对称密钥体制有两种密钥,其中一个是公开的,这样就可以不需要像对称密码那样传输对方的密钥了。
进一步地,针对非对称算法的私钥获取,可以根据用户在明文密码设置的时候,通过对密码复杂度的识别,来选择私钥的复杂度o的开次方数值,即密码越简单越容易被破解,其代位复杂度就需要越高,来弥补明文密码的缺陷,其中,上述复杂度的选择中,过高的复杂度会导致密码代位过程较缓慢,过低的复杂度会导致密码代位的安全性降低,因此私钥位数以及复杂程度o的选择是非对称算法中密码代位的优化节点。例如,在开发环境中,用户的密码为12345,对于此类较简单的密码,其代位复杂度为o(16),那么根据上述复杂度生成o(16)相对应的私钥a。
还需要说明的是,对于在开发环境或者生产环境中,选择不同的私钥和共享的公钥来进行密码的代位计算可以达到多场景多加密安全保障的技术效果,其中,用于多环境的非对称代位算法可以是DH算法,他是一种确保共享KEY安全穿越不安全网络的方法,即允许两名用户在公开媒体上交换信息以生成“一致”的、可以共享的密钥。也就是由甲方产出一对密钥(公钥、私钥),乙方依照甲方公钥产生乙方密钥对(公钥、私钥),其中不同的私钥用于不同的环境,私钥的生成还可以根据本发明实施例所述通过代为前明文密码的复杂度来确定。
例如,本发明实施例对于DH算法的实现如下:DHUtil.java
import java.security.InvalidKeyException;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyAgreement;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.interfaces.DHPrivateKey;
import javax.crypto.interfaces.DHPublicKey;
import javax.crypto.spec.DHParameterSpec;
public class DHUtil {* 定义加密方式*/
private static final String KEY_DH = "DH";
public static final String PUBLIC_KEY = "DHPublicKey";
public static final String PRIVATE_KEY = "DHPrivateKey";
// 实例化密钥对生成器
KeyPairGenerator keyPairGenerator = KeyPairGenerator
.getInstance(KEY_DH);// 初始化密钥对生成器 默认是1024 512-1024 & 64的倍数
keyPairGenerator.initialize(1024);// 生成密钥对
KeyPair keyPair = keyPairGenerator.generateKeyPair();// 得到公钥
DHPublicKey publicKey = (DHPublicKey) keyPair.getPublic();// 得到多环境私钥
DHPrivateKey privateKey = (DHPrivateKey) keyPair.getPrivate();// 将公钥和私钥封装在Map中, 方便之后使用
Map<String, Object> keyMap = new HashMap<String, Object>();
keyMap.put(PUBLIC_KEY, publicKey);
keyMap.put(PRIVATE_KEY, privateKey);
return keyMap;
} catch (Exception e) {
throw new RuntimeException(e);}}
* @return*/
public static Map<String, Object> initKey(byte[] key) {try {// 将公钥从字节数组转换为PublicKey
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(key);
// 实例化密钥KeyFactory keyFactory = KeyFactory.getInstance(KEY_DH);
// 产生公钥pubKeyDHPublicKey dhPublicKey = (DHPublicKey) keyFactory
.generatePublic(keySpec);/ 剖析公钥,得到其参数
DHParameterSpec dhParameterSpec = dhPublicKey.getParams();// 实例化密钥对生成器
KeyPairGenerator keyPairGenerator = KeyPairGenerator
keyPairGenerator.initialize(dhParameterSpec);// 产生密钥对
public class Test {// 待加密的明文
public static final String DATA = "test";public static void main(String[] args) throws Exception {/* Test DH */byte[] publicKey1;// 初始化密钥 并生成甲方密钥对
Map<String, Object> keyMap1 = DHUtil.initKey();
publicKey1 = DHUtil.getPublicKey(keyMap1);
privateKey1 = DHUtil.getPrivateKey(keyMap1);
System.out
// 对于甲方, 根据其私钥和乙方发过来的公钥, 生成其本地密钥secretKey1
secretKey1 = DHUtil.getSecretKeyBytes(publicKey2, privateKey1);
System.out.println("DH 甲方 本地密钥 : "
+ BytesToHex.fromBytesToHex(secretKey1));
//生成其本地密钥secretKey2
secretKey2 = DHUtil.getSecretKeyBytes(publicKey1, privateKey2);
System.out.println("DH本地密钥 : "
+ BytesToHex.fromBytesToHex(secretKey2));
System.out.println("加密前的数据" + DATA);
byte[] encryptDH = DHUtil.encryptDH(DATA.getBytes(), publicKey2,
privateKey1);
System.out.println("加密后的数据 字节数组转16进制显示"
+ BytesToHex.fromBytesToHex(encryptDH));//数据的解密
byte[] decryptDH = DHUtil.decryptDH(encryptDH, publicKey1,privateKey2);
System.out.println("解密后数据:" + new String(decryptDH)); }}
输出模块24,用于将所述占位密码信息进行输出。
具体的,当本发明实施例通过预设算法的计算,获取到了最终的占位密码信息之后,需要将获取到的占位密码信息进行输出,其中,输出上述占位密码信息可以是通过展示设备展示给用户通过原始密码信息变换之后的占位密码信息,也可以是将占位后的相关密码信息发送至用户端,并设定仅有用户端一端可以进行查看和反馈相关的问题。
根据本发明实施例的另一方面,还提供了一种非易失性存储介质,所述非易失性存储介质包括存储的程序,其中,所述程序运行时控制非易失性存储介质所在的设备执行一种密码替换方法。
具体的,上述方法包括:获取原始密码信息;根据预设规则,将所述原始密码信息进行替换,得到占位密码信息;将所述占位密码信息进行输出。
根据本发明实施例的另一方面,还提供了一种电子装置,包含处理器和存储器;所述存储器中存储有计算机可读指令,所述处理器用于运行所述计算机可读指令,其中,所述计算机可读指令运行时执行一种密码替换方法。
具体的,上述方法包括:获取原始密码信息;根据预设规则,将所述原始密码信息进行替换,得到占位密码信息;将所述占位密码信息进行输出。
通过上述实施例,解决了现有的技术方案一般是在项目执行的过程中利用明文存储密码,并同步到代码管理仓库中。比如:数据库密码、API类的鉴权密码、供应商账户密码等。但是对于团队合作的项目,当项目文件中有较多密码时,因为权限管理的需要,不适合如上述技术方案使用纯明文的方式进行密码存储的技术问题。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种密码替换方法,其特征在于,包括:
获取原始密码信息;
根据预设规则,将所述原始密码信息进行替换,得到占位密码信息;
将所述占位密码信息进行输出;
所述根据预设规则,将所述原始密码信息进行替换,得到占位密码信息包括:
根据所述预设规则运行部署程序,得到所述占位密码信息;
其中,所述占位密码信息包括:开发环境占位密码信息、生产环境占位密码信息。
2.根据权利要求1所述的方法,其特征在于,在所述根据预设规则,将所述原始密码信息进行替换,得到占位密码信息之前,所述方法还包括:
获取所述预设规则,其中,所述预设规则用于替换相应的密码信息。
3.根据权利要求1所述的方法,其特征在于,在所述获取原始密码信息之前,所述方法还包括:
获取应用场景信息,其中,所述应用场景信息包括:开发环境、生产环境。
4.一种密码替换装置,其特征在于,包括:
获取模块,用于获取原始密码信息;
替换模块,用于根据预设规则,将所述原始密码信息进行替换,得到占位密码信息;
输出模块,用于将所述占位密码信息进行输出;
所述替换模块包括:
占位单元,用于根据所述预设规则运行部署程序,得到所述占位密码信息;
其中,所述占位密码信息包括:开发环境占位密码信息、生产环境占位密码信息。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:
规则模块,用于获取所述预设规则,其中,所述预设规则用于替换相应的密码信息。
6.根据权利要求4所述的装置,其特征在于,所述装置还包括:
场景模块,用于获取应用场景信息,其中,所述应用场景信息包括:开发环境、生产环境。
7.一种非易失性存储介质,其特征在于,所述非易失性存储介质包括存储的程序,其中,所述程序运行时控制非易失性存储介质所在的设备执行权利要求1至3中任意一项所述的方法。
8.一种电子装置,其特征在于,包含处理器和存储器;所述存储器中存储有计算机可读指令,所述处理器用于运行所述计算机可读指令,其中,所述计算机可读指令运行时执行权利要求1至3中任意一项所述的方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202110833496.0A CN113282913A (zh) | 2021-07-23 | 2021-07-23 | 一种密码替换方法及装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN202110833496.0A CN113282913A (zh) | 2021-07-23 | 2021-07-23 | 一种密码替换方法及装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN113282913A true CN113282913A (zh) | 2021-08-20 |
Family
ID=77287038
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN202110833496.0A Pending CN113282913A (zh) | 2021-07-23 | 2021-07-23 | 一种密码替换方法及装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN113282913A (zh) |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104391874A (zh) * | 2014-10-29 | 2015-03-04 | 中国建设银行股份有限公司 | 一种数据库密码管理方法及系统 |
| CN106778219A (zh) * | 2016-11-17 | 2017-05-31 | 深圳市金立通信设备有限公司 | 一种密码保护方法及终端 |
| CN107895105A (zh) * | 2017-11-03 | 2018-04-10 | 广东欧珀移动通信有限公司 | 一种密码处理方法、终端设备及计算机可读存储介质 |
| CN111737703A (zh) * | 2019-10-28 | 2020-10-02 | 埃睿迪信息技术(北京)有限公司 | 一种基于动态数据脱敏技术的数据湖安全的实现方法 |
-
2021
- 2021-07-23 CN CN202110833496.0A patent/CN113282913A/zh active Pending
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN104391874A (zh) * | 2014-10-29 | 2015-03-04 | 中国建设银行股份有限公司 | 一种数据库密码管理方法及系统 |
| CN106778219A (zh) * | 2016-11-17 | 2017-05-31 | 深圳市金立通信设备有限公司 | 一种密码保护方法及终端 |
| CN107895105A (zh) * | 2017-11-03 | 2018-04-10 | 广东欧珀移动通信有限公司 | 一种密码处理方法、终端设备及计算机可读存储介质 |
| CN111737703A (zh) * | 2019-10-28 | 2020-10-02 | 埃睿迪信息技术(北京)有限公司 | 一种基于动态数据脱敏技术的数据湖安全的实现方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US12184773B2 (en) | Communication network with cryptographic key management for symmetric cryptography | |
| TWI750223B (zh) | 區塊鏈加密射頻晶片存儲設計方法 | |
| US10187200B1 (en) | System and method for generating a multi-stage key for use in cryptographic operations | |
| WO2016173724A1 (en) | Encryption system, encryption key wallet and method | |
| CN109150519A (zh) | 基于公共密钥池的抗量子计算云存储安全控制方法和系统 | |
| CN116866029B (zh) | 随机数加密数据传输方法、装置、计算机设备及存储介质 | |
| WO2001084766A2 (en) | System and method for encryption using transparent keys | |
| JP2009531728A (ja) | 最高セキュリティアプリケーションのための暗号化方法 | |
| CN115499118A (zh) | 报文密钥生成、文件加密、解密方法、装置、设备和介质 | |
| Vegh et al. | Enhancing security in cyber-physical systems through cryptographic and steganographic techniques | |
| WO2018152618A1 (en) | Symmetric cryptographic method and system and applications thereof | |
| WO1998036520A1 (en) | Cryptographic key split combiner | |
| CN116455572B (zh) | 数据加密方法、装置及设备 | |
| CN110750326B (zh) | 一种虚拟机的磁盘加解密方法以及系统 | |
| Kumari et al. | One time pad encryption technique in cryptography | |
| Kuppuswamy et al. | New Innovation of Arabic language Encryption Technique using New symmetric key algorithm | |
| JP5945525B2 (ja) | 鍵交換システム、鍵交換装置、その方法、及びプログラム | |
| CN108334786A (zh) | 一种数据加密方法 | |
| CN113282913A (zh) | 一种密码替换方法及装置 | |
| CN109412788A (zh) | 基于公共密钥池的抗量子计算代理云存储安全控制方法和系统 | |
| Pandey et al. | Data security using various cryptography Techniques: A Recent Survey | |
| Gupta et al. | An enhanced python based approach of secret sharing scheme with encryption | |
| JP2025004683A (ja) | 鍵管理システムおよび鍵管理方法 | |
| Myint | A Data Confidentiality Approach to Short Message Service (SMS) on Android | |
| Singh et al. | Information security using visual cryptographic technique for resource constrained devices |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| PB01 | Publication | ||
| PB01 | Publication | ||
| SE01 | Entry into force of request for substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210820 |
|
| RJ01 | Rejection of invention patent application after publication |