当前位置: 首页>>代码示例>>Java>>正文


Java Base32类代码示例

本文整理汇总了Java中org.apache.commons.codec.binary.Base32的典型用法代码示例。如果您正苦于以下问题:Java Base32类的具体用法?Java Base32怎么用?Java Base32使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


Base32类属于org.apache.commons.codec.binary包,在下文中一共展示了Base32类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: verify

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
@Override
public void verify(DecodedJWT jwt, EncodeType encodeType) throws Exception {
    byte[] signatureBytes = null;
    String signature = jwt.getSignature();
    String urlDecoded = null;
    switch (encodeType) {
        case Base16:
            urlDecoded = URLDecoder.decode(signature, "UTF-8");
            signatureBytes = Hex.decodeHex(urlDecoded);
            break;
        case Base32:
            Base32 base32 = new Base32();
            urlDecoded = URLDecoder.decode(signature, "UTF-8");
            signatureBytes = base32.decode(urlDecoded);
            break;
        case Base64:
            signatureBytes = Base64.decodeBase64(signature);
            break;
    }
    if (signatureBytes.length > 0) {
        throw new SignatureVerificationException(this);
    }
}
 
开发者ID:GJWT,项目名称:javaOIDCMsg,代码行数:24,代码来源:NoneAlgorithm.java

示例2: makeTokenFromJSON

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
private static Token makeTokenFromJSON(JSONObject o) throws JSONException {
    Token tmp = new Token(new Base32().decode(o.getString(SECRET)), o.getString(LABEL), o.getString(TYPE), o.getInt(DIGITS));
    tmp.setAlgorithm(o.getString(ALGORITHM));
    if (o.getString(TYPE).equals(HOTP)) {
        tmp.setCounter(o.getInt(COUNTER));
    }
    if (o.getString(TYPE).equals(TOTP)) {
        tmp.setPeriod(o.getInt(PERIOD));
    }
    if (o.optBoolean(WITHPIN, false)) {
        tmp.setWithPIN(true);
        tmp.setPin(o.getString(PIN));
        tmp.setLocked(true);
    }
    if (o.optBoolean(TAPTOSHOW, false)) {
        tmp.setWithTapToShow(true);
    }
    return tmp;
}
 
开发者ID:privacyidea,项目名称:privacyidea-authenticator,代码行数:20,代码来源:Util.java

示例3: makeJSONfromToken

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
private static JSONObject makeJSONfromToken(Token t) throws JSONException {
    JSONObject o = new JSONObject();
    o.put(SECRET, new String(new Base32().encode(t.getSecret())));
    o.put(LABEL, t.getLabel());
    o.put(DIGITS, t.getDigits());
    o.put(ALGORITHM, t.getAlgorithm());
    o.put(TYPE, t.getType());
    if (t.getType().equals(HOTP)) {
        o.put(COUNTER, t.getCounter());
    }
    if (t.getType().equals(TOTP)) {
        o.put(PERIOD, t.getPeriod());
    }
    if (t.isWithPIN()) {
        o.put(WITHPIN, true);
        o.put(PIN, t.getPin());
    } else {
        o.put(WITHPIN, false);
    }
    if (t.isWithTapToShow()) {
        o.put(TAPTOSHOW, true);
    }
    return o;
}
 
开发者ID:privacyidea,项目名称:privacyidea-authenticator,代码行数:25,代码来源:Util.java

示例4: JWTDecoder

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
public JWTDecoder(String jwt, EncodeType encodeType) throws Exception {
    parts = TokenUtils.splitToken(jwt);
    final JWTParser converter = new JWTParser();
    String headerJson = null;
    String payloadJson = null;
    switch (encodeType) {
        case Base16:
            headerJson = URLDecoder.decode(new String(Hex.decodeHex(parts[0])), "UTF-8");
            payloadJson = URLDecoder.decode(new String(Hex.decodeHex(parts[1])), "UTF-8");
            break;
        case Base32:
            Base32 base32 = new Base32();
            headerJson = URLDecoder.decode(new String(base32.decode(parts[0]), "UTF-8"));
            payloadJson = URLDecoder.decode(new String(base32.decode(parts[1]), "UTF-8"));
            break;
        case Base64:
            headerJson = StringUtils.newStringUtf8(Base64.decodeBase64(parts[0]));
            payloadJson = StringUtils.newStringUtf8(Base64.decodeBase64(parts[1]));
            break;
    }
    header = converter.parseHeader(headerJson);
    payload = converter.parsePayload(payloadJson);
}
 
开发者ID:GJWT,项目名称:javaOIDCMsg,代码行数:24,代码来源:JWTDecoder.java

示例5: signBase32Encoding

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
private String signBase32Encoding() throws UnsupportedEncodingException{
    Base32 base32 = new Base32();
    String header = URLEncoder.encode(headerJson, "UTF-8");
    String payload = URLEncoder.encode(payloadJson, "UTF-8");

    byte[] bHeader = header.getBytes("UTF-8");
    String encodedHeader = base32.encodeAsString(bHeader);

    byte[] bPayload = payload.getBytes("UTF-8");
    String encodedPayload = base32.encodeAsString(bPayload);

    String content = String.format("%s.%s", encodedHeader, encodedPayload);
    byte[] signatureBytes = algorithm.sign(content.getBytes(StandardCharsets.UTF_8));
    String signature = base32.encodeAsString(signatureBytes);
    String signatureFinal = URLEncoder.encode(signature, "UTF-8");

    return String.format("%s.%s", content, signatureFinal);
}
 
开发者ID:GJWT,项目名称:javaOIDCMsg,代码行数:19,代码来源:JWTCreator.java

示例6: onCreate

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getArguments() != null) {
        Vault v = (Vault) SingleTon.getTon().getExtra(SettingValues.ACTIVE_VAULT.toString());
        credential = v.findCredentialByGUID(getArguments().getString(CREDENTIAL));
    }

    handler = new Handler();
    otp_refresh = new Runnable() {
        @Override
        public void run() {
            int progress =  (int) (System.currentTimeMillis() / 1000) % 30 ;
            otp_progress.setProgress(progress*100);

            ObjectAnimator animation = ObjectAnimator.ofInt(otp_progress, "progress", (progress+1)*100);
            animation.setDuration(1000);
            animation.setInterpolator(new LinearInterpolator());
            animation.start();

            otp.setText(TOTPHelper.generate(new Base32().decode(credential.getOtp())));
            handler.postDelayed(this, 1000);
        }
    };
}
 
开发者ID:nextcloud,项目名称:passman-android,代码行数:26,代码来源:CredentialDisplay.java

示例7: encryptString

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
public static String encryptString(String password, String value) {
    String salt = KeyGenerators.string().generateKey();
    SecretKeySpec skeySpec = makeKeySpec(password, salt);
    byte[] iv = KeyGenerators.secureRandom(16).generateKey();
    String ivString = Hex.encodeHexString(iv);

    try {
        Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec,
                new GCMParameterSpec(128, iv));
                /*
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, skeySpec,
                new IvParameterSpec(iv));
                */

        byte[] encrypted = cipher.doFinal(value.getBytes(Charset.forName("UTF-8")));
        String s = StringUtils.strip(new Base32().encodeAsString(encrypted), "=").toLowerCase();
        // Strip line breaks
        s = salt + ivString + s.replaceAll("(\\n|\\r)", "");
        return s;
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}
 
开发者ID:StallionCMS,项目名称:stallion-core,代码行数:26,代码来源:Encrypter.java

示例8: generateSharedSecret

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
/**
 * Generates a random secret that is 16 characters long for the client which
 * is encoded using Base32 according to RFC 3548.
 * 
 * @return Base32 encoded shared Secret
 * @throws OTPManagerException
 *             if a failure occur while generating the shared secret
 */
protected String generateSharedSecret() throws OTPManagerException {
	LOG.info("Generating shared secret...");

	int value = Constants.SECRET_BITS / 8 + Constants.SCRATCH_CODES * Constants.BYTES_PER_SCRATCH_CODE;
	byte[] sharedSecret = null;
	byte[] encodedSharedSecret = null;
	Base32 codec = new Base32();
	try {
		secureRandom = SecureRandom.getInstance(Constants.RANDOM_NUMBER_ALGORITHM);
		byte[] buffer = new byte[value];
		secureRandom.nextBytes(buffer);
		sharedSecret = Arrays.copyOf(buffer, Constants.SECRET_BITS / 8);
		encodedSharedSecret = codec.encode(sharedSecret);
		reSeed();
	} catch (Exception e) {
		LOG.error("Error while generating shared secret " + e.getMessage(), e);
		throw new OTPManagerException("Error while generating shared secret " + e.getMessage(), e);
	}
	LOG.debug("Generated shared secret successfully");
	return new String(encodedSharedSecret);
}
 
开发者ID:GSLabDev,项目名称:OTPManager,代码行数:30,代码来源:Utils.java

示例9: authCodeInternal

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
private int authCodeInternal(long time) throws NoSuchAlgorithmException, InvalidKeyException {
    long t = time / 30000;
    byte[] key = new Base32().decode(sharedSecret.toUpperCase().getBytes());
    byte[] data = new byte[8];
    long value = t;
    int i = 8;
    while (true) {
        int i2 = i - 1;
        if (i <= 0) {
            break;
        }
        data[i2] = (byte) ((int) value);
        value >>>= 8;
        i = i2;
    }
    SecretKeySpec signKey = new SecretKeySpec(key, "HmacSHA1");
    Mac mac = Mac.getInstance("HmacSHA1");
    mac.init(signKey);
    byte[] hash = mac.doFinal(data);
    int offset = hash[19] & 15;
    long truncatedHash = 0;
    for (int i2 = 0; i2 < 4; i2 += 1) {
        truncatedHash = (truncatedHash << 8) | ((long) (hash[offset + i2] & 255));
    }
    return (int) ((truncatedHash & 2147483647L) % 1000000);
}
 
开发者ID:vertretungsplanme,项目名称:substitution-schedule-parser,代码行数:27,代码来源:WebUntisParser.java

示例10: Entry

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
public Entry(String contents) throws Exception {
    contents = contents.replaceFirst("otpauth", "http");
    Uri uri = Uri.parse(contents);
    URL url = new URL(contents);

    if(!url.getProtocol().equals("http")){
        throw new Exception("Invalid Protocol");
    }

    if(!url.getHost().equals("totp")){
        throw new Exception();
    }

    String secret = uri.getQueryParameter("secret");
    String label = uri.getPath().substring(1);

    String issuer = uri.getQueryParameter("issuer");

    if(issuer != null){
        label = issuer +" - "+label;
    }

    this.label = label;
    this.secret = new Base32().decode(secret.toUpperCase());
}
 
开发者ID:0xbb,项目名称:otp-authenticator,代码行数:26,代码来源:Entry.java

示例11: isValidOTP

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
public static boolean isValidOTP(String secret, int code) {
    if (secret == null) {
        return false;
    } else {
        byte[] buffer = new Base32().decode(secret);
        long index = getTimeIndexOTP();
        if (code == getCodeOTP(buffer, index - 2)) {
            return true;
        } else if (code == getCodeOTP(buffer, index - 1)) {
            return true;
        } else if (code == getCodeOTP(buffer, index)) {
            return true;
        } else if (code == getCodeOTP(buffer, index + 1)) {
            return true;
        } else if (code == getCodeOTP(buffer, index + 2)) {
            return true;
        } else {
            return false;
        }
    }
}
 
开发者ID:leonamp,项目名称:SPFBL,代码行数:22,代码来源:Core.java

示例12: checkCode

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
public static boolean checkCode(String secret, long code, long timeMsec) {
  Base32 codec = new Base32();
  byte[] decodedKey = codec.decode(secret);
  long t = (timeMsec / 1000L) / 30L;
  for (int i = -WINDOW_SIZE; i <= WINDOW_SIZE; ++i) {
    long hash;
    try {
      hash = computeHash(decodedKey, t + i);
    } catch (Exception e) {
      e.printStackTrace();
      throw new RuntimeException(e.getMessage());
    }
    if (hash == code) {
      return true;
    }
  }
  return false;
}
 
开发者ID:WeAreWizards,项目名称:passopolis-server,代码行数:19,代码来源:TwoFactorCodeChecker.java

示例13: twoFactorTestSetup

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
/** Enables two-factor auth for testIdentity, storing parameters in twoFactorData. */
@Before
public void twoFactorTestSetup() throws Exception {
  twoFactorData = new TwoFactorTestData();

  // set secret in DB means two factor auth is enabled
  testIdentity.setTwoFactorSecret(twoFactorData.testSecret);

  // create testToken and sign it
  twoFactorData.testToken =
      GetMyPrivateKey.makeLoginTokenString(testIdentity, twoFactorData.redirectUrl, null);
  twoFactorData.testSignature = TwoFactorSigningService.signToken(twoFactorData.testToken);

  // create code as if the google authenticator had
  Base32 codec = new Base32();
  byte[] decodedKey = codec.decode(twoFactorData.testSecret);
  long t = (System.currentTimeMillis() / 1000L) / 30L;
  twoFactorData.validTimeCode = Integer.toString(TwoFactorCodeChecker.computeHash(decodedKey, t));
  twoFactorData.backupCode = "123456789";
  byte[] salt = CryptoForBackupCodes.randSaltGen();
  testIdentity.setBackup(0, CryptoForBackupCodes.digest(twoFactorData.backupCode, salt));

  manager.identityDao.update(testIdentity);
  manager.commitTransaction();
}
 
开发者ID:WeAreWizards,项目名称:passopolis-server,代码行数:26,代码来源:TwoFactorTests.java

示例14: checkCode

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
/**
 * This method implements the algorithm specified in RFC 6238 to check if a
 * validation code is valid in a given instant of time for the given secret
 * key.
 *
 * @param secret    the Base32 encoded secret key.
 * @param codeString      the code to validate.
 * @return <code>true</code> if the validation code is valid,
 * <code>false</code> otherwise.
 */
public static boolean checkCode(final String secret, final String codeString) {
    final long code;
    try {
        code = Long.parseLong(codeString);
    } catch(final NumberFormatException e) {
        return false;
    }
    final Base32 codec32 = new Base32();
    final byte[] decodedKey = codec32.decode(secret);
    final long timeWindow = System.currentTimeMillis() / 30000;
    final int window = 0;
    for (int i = -((window - 1) / 2); i <= window / 2; ++i) {
        final long hash = calculateCode(decodedKey, timeWindow + i);
        if (hash == code) {
            return true;
        }
    }
    return false;
}
 
开发者ID:bubblecloud,项目名称:ilves,代码行数:30,代码来源:GoogleAuthenticatorService.java

示例15: verifyCode

import org.apache.commons.codec.binary.Base32; //导入依赖的package包/类
/**
 * Verifies if a code is valid for a given secret. The code is valid for 90
 * seconds. The current system time is used in the calculation.
 * 
 * @param code
 *            The user supplied code to verify
 * @param secret
 *            The shared secret between the mobile phone and the server
 * @return true if the code is valid, false if the code is invalid
 */
public static boolean verifyCode(String code, String secret) {
    try {
        // Number of 30 second intervals since epoch
        long timesteps = System.currentTimeMillis() / 1000L / 30L;
        byte[] secretBytes = new Base32().decode(secret);
        int codeInt = Integer.parseInt(code);

        // A window where the code is valid
        int window = 1;
        for (int i = -window; i <= window; i++) {
            if (hotp(secretBytes, timesteps + i) == codeInt) {
                return true;
            }
        }
    } catch (Exception e) {
        // Catch all types of exceptions and return false
    }
    return false;
}
 
开发者ID:josteitv,项目名称:authenticator-demo,代码行数:30,代码来源:TwoStepVerification.java


注:本文中的org.apache.commons.codec.binary.Base32类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。