導航:首頁 > 編程語言 > java校驗和

java校驗和

發布時間:2022-06-21 16:10:58

java密碼復雜度校驗

qaz,qwer這種都不能通過?這不算連續的吧,要實現這樣的你只能把連續的可能性列出來,比如[q,w,e,r,t,y,u,i,o,p]為一組,比如你的密碼包含wert四個字母,那你可以把這四個字母拆開,先使用w從數組中開始遍歷,發現w與數組中第二個元素相等,那麼再取密碼的第二個字母w與數組中的第三個元素比較,如果相等再比較下一個,滿足有三個字母對應上的就直接返回校驗不通過。
如果是要校驗0123456789和abcdefg這樣的連續的,你可以把密碼的拆分成char數組,數組每個元素轉成數值其實就是這個字元的ascii碼,然後比較相鄰的三個元素ascii碼是不是連續的就可以判斷出來,不過這種方法需要注意一點,比如'@'的ascii為64,'A'的ascii為65也是連續的,需要自己進行篩選。覺得這種方法麻煩的話也可以使用上面的方法把連續的都先列舉出來。
我只寫一下我的想法,僅供參考。

⑵ java校驗json格式及內容

代碼如下
import java.text.CharacterIterator;
import java.text.StringCharacterIterator;

public class JsonValidator {

private CharacterIterator it;
private char c;
private int col;

public JsonValidator(){
}

/**
* 驗證一個字元串是否是合法的JSON串
*
* @param input 要驗證的字元串
* @return true-合法 ,false-非法
*/
public boolean validate(String input) {
input = input.trim();
boolean ret = valid(input);
return ret;
}

private boolean valid(String input) {
if ("".equals(input)) return true;

boolean ret = true;
it = new StringCharacterIterator(input);
c = it.first();
col = 1;
if (!value()) {
ret = error("value", 1);
} else {
skipWhiteSpace();
if (c != CharacterIterator.DONE) {
ret = error("end", col);
}
}

return ret;
}

private boolean value() {
return literal("true") || literal("false") || literal("null") || string() || number() || object() || array();
}

private boolean literal(String text) {
CharacterIterator ci = new StringCharacterIterator(text);
char t = ci.first();
if (c != t) return false;

int start = col;
boolean ret = true;
for (t = ci.next(); t != CharacterIterator.DONE; t = ci.next()) {
if (t != nextCharacter()) {
ret = false;
break;
}
}
nextCharacter();
if (!ret) error("literal " + text, start);
return ret;
}

private boolean array() {
return aggregate('[', ']', false);
}

private boolean object() {
return aggregate('{', '}', true);
}

private boolean aggregate(char entryCharacter, char exitCharacter, boolean prefix) {
if (c != entryCharacter) return false;
nextCharacter();
skipWhiteSpace();
if (c == exitCharacter) {
nextCharacter();
return true;
}

for (;;) {
if (prefix) {
int start = col;
if (!string()) return error("string", start);
skipWhiteSpace();
if (c != ':') return error("colon", col);
nextCharacter();
skipWhiteSpace();
}
if (value()) {
skipWhiteSpace();
if (c == ',') {
nextCharacter();
} else if (c == exitCharacter) {
break;
} else {
return error("comma or " + exitCharacter, col);
}
} else {
return error("value", col);
}
skipWhiteSpace();
}

nextCharacter();
return true;
}

private boolean number() {
if (!Character.isDigit(c) && c != '-') return false;
int start = col;
if (c == '-') nextCharacter();
if (c == '0') {
nextCharacter();
} else if (Character.isDigit(c)) {
while (Character.isDigit(c))
nextCharacter();
} else {
return error("number", start);
}
if (c == '.') {
nextCharacter();
if (Character.isDigit(c)) {
while (Character.isDigit(c))
nextCharacter();
} else {
return error("number", start);
}
}
if (c == 'e' || c == 'E') {
nextCharacter();
if (c == '+' || c == '-') {
nextCharacter();
}
if (Character.isDigit(c)) {
while (Character.isDigit(c))
nextCharacter();
} else {
return error("number", start);
}
}
return true;
}

private boolean string() {
if (c != '"') return false;

int start = col;
boolean escaped = false;
for (nextCharacter(); c != CharacterIterator.DONE; nextCharacter()) {
if (!escaped && c == '\\') {
escaped = true;
} else if (escaped) {
if (!escape()) {
return false;
}
escaped = false;
} else if (c == '"') {
nextCharacter();
return true;
}
}
return error("quoted string", start);
}

private boolean escape() {
int start = col - 1;
if (" \\\"/bfnrtu".indexOf(c) < 0) {
return error("escape sequence \\\",\\\\,\\/,\\b,\\f,\\n,\\r,\\t or \\uxxxx ", start);
}
if (c == 'u') {
if (!ishex(nextCharacter()) || !ishex(nextCharacter()) || !ishex(nextCharacter())
|| !ishex(nextCharacter())) {
return error("unicode escape sequence \\uxxxx ", start);
}
}
return true;
}

private boolean ishex(char d) {
return "0123456789abcdefABCDEF".indexOf(c) >= 0;
}

private char nextCharacter() {
c = it.next();
++col;
return c;
}

private void skipWhiteSpace() {
while (Character.isWhitespace(c)) {
nextCharacter();
}
}

private boolean error(String type, int col) {
System.out.printf("type: %s, col: %s%s", type, col, System.getProperty("line.separator"));
return false;
}
public static void main(String[] args){
String jsonStr = "{\"website\":\"open-open.com\"}";
System.out.println(jsonStr+":"+new JsonValidator().validate(jsonStr));
}
}

⑶ java里如何正確計算檢驗和

importjava.security.MessageDigest;

publicclassMD5HashingExample
{
publicstaticvoidmain(String[]args)throwsException
{
Stringpassword="123456";

MessageDigestmd=MessageDigest.getInstance("MD5");
md.update(password.getBytes("UTF-8"));//orGBK

bytebyteData[]=md.digest();

//
StringBuffersb=newStringBuffer();
for(inti=0;i<byteData.length;i++){
sb.append(Integer.toString((byteData[i]&0xff)+0x100,16).substring(1));
}

System.out.println("Digest(inhexformat)::"+sb.toString());

//
StringBufferhexString=newStringBuffer();
for(inti=0;i<byteData.length;i++){
Stringhex=Integer.toHexString(0xff&byteData[i]);
if(hex.length()==1)hexString.append('0');
hexString.append(hex);
}
System.out.println("Digest(inhexformat)::"+hexString.toString());
}
}

⑷ JAVA中前台校驗和後台校驗哪個安全,如果後台校驗安全為什麼不取消前台校驗

前台的驗證一般是通過Javascript,js代碼是可以被禁用和篡改的,所以相對後台檢驗而言,安全性會低一些。

前台校驗不需要伺服器返回數據的選項,例如密碼為空啊,郵箱不合法啊,但是也需要後台校驗,例如用戶名重復校驗,必須提交後台查詢資料庫,返回是否重復。原則就是能前台JS校驗的就前台校驗,一來快捷,二來減少伺服器的壓力。

⑸ java文件中校驗日期和時間格式,急求解答

SimpleDateFormatsdf=newSimpleDateFormat(format);
字元串的話判斷
try{
returnstr!=null&&sdf.format(sdf.parse(str)).equals(str);
}catch(e){
returnfalse;
}

日期的話
try{
returndate!=null&&sdf.parse(sdf.format(str)).getTime()==date.getTime()
}catch(e){
returnfalse;
}

⑹ java中如何進行密碼校驗

一般有2種
辦法,
一是用正則表達式匹配法;二就是要你自己寫校驗字元串的
java代碼

⑺ 如何使用java validation api進行參數校驗

JAVA中通過Hibernate-Validation進行參數驗證
在開發JAVA伺服器端代碼時,我們會遇到對外部傳來的參數合法性進行驗證,而hibernate-validator提供了一些常用的參數校驗註解,我們可以拿來使用。
1.maven中引入hibernate-validator對應的jar:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.1.Final</version>
</dependency>

2.在Model中定義要校驗的欄位(即該欄位不能為空,並且最大長度為14):

import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.NotEmpty;

public class PayRequestDto {

/**
* 支付完成時間
**/
@NotEmpty(message="支付完成時間不能空")
@Size(max=14,message="支付完成時間長度不能超過{max}位")
private String payTime;

public String getPayTime() {
return payTime;
}

public void setPayTime(String payTime) {
this.payTime = payTime;
}
}

3.定義Validation工具類:

import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import org.hibernate.validator.HibernateValidator;
import com.atai.framework.lang.AppException;

public class ValidationUtils {

/**
* 使用hibernate的註解來進行驗證
*
*/
private static Validator validator = Validation
.byProvider(HibernateValidator.class).configure().failFast(true).buildValidatorFactory().getValidator();

/**
* 功能描述: <br>
* 〈註解驗證參數〉
*
* @param obj
* @see [相關類/方法](可選)
* @since [產品/模塊版本](可選)
*/
public static <T> void validate(T obj) {
Set<ConstraintViolation<T>> constraintViolations = validator.validate(obj);
// 拋出檢驗異常
if (constraintViolations.size() > 0) {
throw new AppException("0001", String.format("參數校驗失敗:%s", constraintViolations.iterator().next().getMessage()));
}
}
}

4.在代碼中調用工具類進行參數校驗:
ValidationUtils.validate(requestDto);

以下是對hibernate-validator中部分註解進行描述:
@AssertTrue 用於boolean欄位,該欄位只能為true
@AssertFalse 該欄位的值只能為false
@CreditCardNumber 對信用卡號進行一個大致的驗證
@DecimalMax 只能小於或等於該值
@DecimalMin 只能大於或等於該值
@Digits(integer=,fraction=) 檢查是否是一種數字的整數、分數,小數位數的數字
@Email 檢查是否是一個有效的email地址
@Future 檢查該欄位的日期是否是屬於將來的日期
@Length(min=,max=) 檢查所屬的欄位的長度是否在min和max之間,只能用於字元串
@Max 該欄位的值只能小於或等於該值
@Min 該欄位的值只能大於或等於該值
@NotNull 不能為null
@NotBlank 不能為空,檢查時會將空格忽略
@NotEmpty 不能為空,這里的空是指空字元串
@Null 檢查該欄位為空
@Past 檢查該欄位的日期是在過去
@Pattern(regex=,flag=) 被注釋的元素必須符合指定的正則表達式
@Range(min=,max=,message=) 被注釋的元素必須在合適的范圍內
@Size(min=, max=) 檢查該欄位的size是否在min和max之間,可以是字元串、數組、集合、Map等
@URL(protocol=,host,port) 檢查是否是一個有效的URL,如果提供了protocol,host等,則該URL還需滿足提供的條件
@Valid 該註解主要用於欄位為一個包含其他對象的集合或map或數組的欄位,或該欄位直接為一個其他對象的引用,這樣在檢查當前對象的同時也會檢查該欄位所引用的對象

⑻ java 方法參數怎麼優雅校驗

建議參考validation框架,比較常用的實現hibernate-validation,使用@annatation進行聲明式校驗,並且校驗代碼可以復用,同時約束應用框架的數據標准。

⑼ java 如何計算校驗和,比如如下這段代碼如何修改

您好,1、 編寫一個計算機程序用來計算一個文件的16位效驗和。最快速的方法是用一個32位的整數來存放這個和。記住要處理進位(例如,超過16位的那些位),把它們加到效驗和中。
要求:1)以命令行形式運行:check_sum infile
其中check_sum為程序名,infile為輸入數據文件名。
2)輸出:數據文件的效驗和
附:效驗和(checksum)
 原理:把要發送的數據看成二進制整數序列,並計算他們的和。若數據位元組長度為奇數,則在數據尾部補一個位元組的0以湊成偶數。
 例子:16位效驗和計算,下圖表明一個小的字元串的16位效驗和的計算。
為了計算效驗和,發送計算機把每對字元當成16位整數處理並計算效驗和。如果效驗和大於16位,那麼把進位一起加到最後的效驗和中。

⑽ 在java web中對輸入數據進行校驗的方式有多少種分別都是什麼

要用JavaScript,使用下面的標記:
script language="javascript"
//JavaScript代碼
/script
要寫方法
function check(){
}
方法可以不用定義返回值,但是可以有返回值
獲取用戶輸入的值:
document.form1.username.value
document表示當前文檔,form1表示表單的名字,username表示該表單中表單元素的名字,value表示得到值
把表單提交與方法關聯:可以使用表單的onSubmit事件。
onSubmit="return check();"
例:
script language="javascript"
function check(){
username = document.form1.username.value;
if(username.length6 || username.length8){
alert("用戶名長度不合適!");
return false;
}else{
return true;
}
}
/script
使用button的onClick事件進行驗證:
首先要把提交按鈕修改成普通按鈕;
在普通按鈕上增加事件:onClick="javascript:check()"
在驗證成功的時候,提交表單:document.form1.submit();

閱讀全文

與java校驗和相關的資料

熱點內容
指數函數和對數函數的高精度快速演算法 瀏覽:205
c預編譯干什麼 瀏覽:22
hp網路共享文件夾 瀏覽:363
程序員如何不被廢 瀏覽:803
二進制流轉pdf 瀏覽:916
php判斷爬蟲 瀏覽:571
960除24除4簡便演算法 瀏覽:786
關於解壓英語翻譯 瀏覽:565
python控制鍵盤右鍵 瀏覽:920
php沒有libmysqldll 瀏覽:828
時政新聞app哪個好 瀏覽:906
手機已加密怎麼辦 瀏覽:201
安卓手機截屏怎麼傳到蘋果 瀏覽:527
京管家app哪裡下載 瀏覽:33
文件夾橫向排列的豎向排列 瀏覽:453
51單片機驅動攝像頭模塊 瀏覽:689
政府文件加密沒法轉換 瀏覽:373
android判斷棧頂 瀏覽:331
憑證軟體源碼 瀏覽:860
androidwebview滾動事件 瀏覽:11