⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ssh2rsa.java

📁 一个非常好的ssh客户端实现
💻 JAVA
字号:
/****************************************************************************** * * Copyright (c) 1999-2003 AppGate Network Security AB. All Rights Reserved. *  * This file contains Original Code and/or Modifications of Original Code as * defined in and that are subject to the MindTerm Public Source License, * Version 2.0, (the 'License'). You may not use this file except in compliance * with the License. *  * You should have received a copy of the MindTerm Public Source License * along with this software; see the file LICENSE.  If not, write to * AppGate Network Security AB, Otterhallegatan 2, SE-41118 Goteborg, SWEDEN * *****************************************************************************/package com.mindbright.ssh2;import java.math.BigInteger;import com.mindbright.jca.security.KeyFactory;import com.mindbright.jca.security.PublicKey;import com.mindbright.jca.security.spec.RSAPublicKeySpec;import com.mindbright.jca.security.interfaces.RSAPublicKey;/** * Implements "ssh-rsa" signatures according to the ssh standard. */public final class SSH2RSA extends SSH2SimpleSignature {    public final static String SSH2_KEY_FORMAT = "ssh-rsa";    public SSH2RSA() {	super("SHA1withRSA", SSH2_KEY_FORMAT);    }    /**     * Encode the given public key according to the ssh standard.     *     * @param publicKey The public key to encode. Must be an instance of     *                  <code>RSAPublicKey</code>.     *     * @return A byte array containing the key suitably encoded.     */    public byte[] encodePublicKey(PublicKey publicKey) throws SSH2Exception {	SSH2DataBuffer buf = new SSH2DataBuffer(8192);	if(!(publicKey instanceof RSAPublicKey)) {	    throw new SSH2FatalException("SSH2RSA, invalid public key type: " +					 publicKey);	}	RSAPublicKey rsaPubKey = (RSAPublicKey)publicKey;	buf.writeString(SSH2_KEY_FORMAT);	buf.writeBigInt(rsaPubKey.getPublicExponent());	buf.writeBigInt(rsaPubKey.getModulus());	return buf.readRestRaw();    }    /**     * Decode a public key encoded according to the ssh standard.     *     * @param pbKeyBlob A byte array containing a public key blob.     *     * @return A <code>Publickey</code> instance.     */    public PublicKey decodePublicKey(byte[] pubKeyBlob) throws SSH2Exception {	BigInteger e, n;	SSH2DataBuffer buf = new SSH2DataBuffer(pubKeyBlob.length);	buf.writeRaw(pubKeyBlob);	String type = buf.readJavaString();	if(!type.equals(SSH2_KEY_FORMAT)) {	    throw new SSH2FatalException("SSH2RSA, keyblob type mismatch, got '"					 + type + ", (execpted + '" +					 SSH2_KEY_FORMAT + "')");	}	e = buf.readBigInt();	n = buf.readBigInt();	try {	    KeyFactory       rsaKeyFact = KeyFactory.getInstance("RSA");	    RSAPublicKeySpec rsaPubSpec = new RSAPublicKeySpec(n, e);	    return rsaKeyFact.generatePublic(rsaPubSpec);	} catch (Exception ee) {	    throw new SSH2FatalException("SSH2RSA, error decoding public key blob: " +					 ee);	}    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -